我在通过 SFTP 连接服务器时遇到问题。我可以通过 SSH 顺利进入系统,但出于某种奇怪的原因,我无法使用 SFTP(以前我可以)。
我已清除所有 iptables 规则,iptables -F
但仍然无法访问。我已删除子系统(以允许完全访问),但仍然无法访问。我无论如何也想不出问题所在。因此,无法解决问题。
更新
子系统配置部分来自http://pastebin.com/eZwZ5Z7w
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp sftp-server
答案1
删除 sftp 子系统会禁用 sftp。尝试再次添加条目。如果重新启动 ssh 服务后仍然不起作用,请使用 sshd 配置更新问题。
更新
您提供的配置没有给出完整路径,请尝试使用注释版本。
Subsystem sftp /usr/lib/openssh/sftp-server
例如,我的配置有
# 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
答案2
这可能对原始海报没有帮助,但我遇到了导致相同症状的另一个原因。
症状:当我sftp -v <user>@<host>
打印后连接阻塞:
debug1: Sending subsystem: sftp
原因:为了绕过系统默认的 shell 配置,我在顶部添加了以下行~/.bashrc
:
exec env -i HOME=$HOME TERM=$TERM bash --noprofile --rcfile ~/.bash2
甚至只是exec bash
导致同样的问题。我想这是有道理的 - 来源~/.bashrc
永远不会返回 - 相反,执行了 bash 的新实例并替换了旧实例。
ssh 服务器在运行之前需要获取 shell 配置文件,这也许令人惊讶/usr/lib/openssh/sftp-server
。
更新:另请参阅 OpenSSH FAQ 中的相关条目:
http://openssh.com/faq.html#2.9
(标题为“sftp/scp 连接失败,但 ssh 正常”的条目)