SSH 控制台登录正常,但 SFTP 不能登录,为什么?

SSH 控制台登录正常,但 SFTP 不能登录,为什么?

我正在尝试使用 Filezilla 进行 SFTP,但它无法连接到服务器,我认为这是由于我的防火墙规则所致?

我的 SSH 绝对没问题。 SSH 的端口是 6128。谁能告诉我,鉴于 SSH 已经可以工作,我需要进行哪些更改才能允许通过 SSH 进行 FTP 连接?

(这是我的IPtables规则)

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh
ACCEPT     all  --  anywhere             anywhere
REJECT     all  --  anywhere             loopback/8           reject-with icmp-port-unreachable
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     udp  --  anywhere             anywhere             udp dpt:9987
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:10011
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:30033
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:6128
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
LOG        all  --  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
DROP       all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

Chain fail2ban-ssh (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

答案1

要从其他主机访问您的 sftp,请确保正确安装和配置以下内容。

  • 安装的 OpenSSH 服务器
  • 已配置sshd_配置
    • 公钥验证 是
    • 子系统 sftp 内部 sftp
  • 将您的公钥添加到 ~/.ssh/authorized_keys

  • 启动 ssh 服务器并打开端口 22/TCP # /etc/init.d/sshd start

  • # iptables -I INPUT -j ACCEPT -p tcp --dport 22

最后,测试一下 $ sftp <login>@<hostname>

答案2

就我而言,用户位于zsh其 .bashrc 文件的顶部,以便他可以进入 zsh shell 而不是 bash。

bash 是他的默认 shell。删除这个解决了这个问题。然后我chsh user -s /bin/zsh让用户保留 zsh 作为他的默认 shell。

答案3

您的任何 .profile 文件中是否有任何文本进入控制台(例如 echo 语句),例如.bashrc?这可能会扰乱 sftp 连接。看我的 回答关于 serverfault 的类似问题

答案4

如果您使用 filezilla,以下答案对我有帮助:

https://www.digitalocean.com/community/questions/able-to-access-via-ssh-but-not-filezilla

在 Filezilla 中,选择菜单“编辑”->“设置”,在左侧面板上展开“连接”->SFTP。在右侧,确保您拥有正确的私钥文件,如果缺少正确的条目,请添加。

使用 DO Web 控制台,以 root 身份登录并执行“tail -f /var/log/auth.log”。然后尝试使用 Filezilla 登录并记下任何消息。

相关内容