我遇到问题通过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正常。”)