SFTP“无法连接到服务器错误”

我遇到问题通过SFTP连接到我的服务器。 我可以很好地SSH系统到系统,但由于一些奇怪的原因,我无法SFTP(我曾经能够)。

我清除了我所有的iptables规则iptables -F仍然无法访问。 我删除了子系统(以允许完全访问)仍然无法访问。 我不能为了我的生活找出问题所在。 因此是不可能的解决办法。

更新

子系统configuration部分从http://pastebin.com/eZwZ5Z7w

 #Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp sftp-server 

去除sftp子系统将禁用sftp。 尝试再次添加条目。 如果在重新启动ssh服务后仍然无法工作,请使用sshd config更新问题。

更新

您提供的configuration不能提供完整的path,请尝试使用注释版本。

 Subsystem sftp /usr/lib/openssh/sftp-server 

例如,我的configuration有

 # grep sftp /etc/ssh/sshd_config Subsystem sftp /usr/libexec/openssh/sftp-server 

如果我通过定位查找文件,它确认它只位于那里。

 # locate sftp-server /usr/libexec/openssh/sftp-server /usr/share/man/man8/sftp-server.8.gz 

这可能不会帮助原来的海报,但我遇到了另一个导致相同症状的原因。

症状:当我sftp -v <user>@<host> ,打印后的连接块:

 debug1: Sending subsystem: sftp 

原因:为了绕过系统默认的shellconfiguration,我把下面一行放在~/.bashrc的顶部:

 exec env -i HOME=$HOME TERM=$TERM bash --noprofile --rcfile ~/.bash2 

即使简单的exec bash也会导致同样的问题。 我想这是有道理的 – ~/.bashrc的源头永远不会返回 – 而是一个新的bash实例被执行并取代旧的。

也许令人惊讶的是,在运行/usr/lib/openssh/sftp-server之前,ssh服务器需要获取shellconfiguration文件。

更新:另请参阅OpenSSH FAQ中的相关条目:
http://openssh.com/faq.html#2.9
(标题为:“sftp / scp在连接时失败,但ssh正常。”)