以下是 Filezilla 调试跟踪的摘录:
Offered public key from "(...)"
Offer of public key accepted, trying to authenticate using it.
Access granted
Server unexpectedly closed network connection
我注意到在调试模式下 putty 有同样的行为,访问被授予,然后“服务器意外关闭了网络连接”。
从 /etc/ssh/sshd_config 中删除以下行时:
Match User user1
ChrootDirectory /home/user1
AllowTCPForwarding no
X11Forwarding no
ForceCommand /usr/lib/openssh/sftp-server
然后 Filezilla 可以连接,但 PuTTY 却不能。这没问题,因为我只针对 FTP,但 user1 可以访问比所需主目录多得多的内容,这不太好。
知道如何解决此问题吗?服务器端是否有任何日志可供查看?
附言:我认为这与问题无关,但身份验证是基于密钥的(正如它在跟踪中出现的那样)。
更新:感谢 Fred Clausen 的好建议,我查看了 /var/log/secure 并修复了“致命:chroot 目录组件的所有权或模式错误”问题。但它仍然不起作用。以下是 /var/log/secure 的当前内容
Accepted publickey for user1 from ***.***.***.*** port 56432 ssh2
pam_unix(sshd:session): session opened for user user1 by (uid=0)
subsystem request for sftp by user user1
pam_unix(sshd:session): session closed for user user1
从 Filzilla 调试中,我发现了这个有趣的错误:
Event Log: Started a shell/command
Incoming packet #0xc, type 94 / 0x5e (SSH2_MSG_CHANNEL_DATA)
00000000 00 00 01 00 00 00 00 26 2f 62 69 6e 2f 62 61 73 .......&/bin/bas
00000010 68 3a 20 4e 6f 20 73 75 63 68 20 66 69 6c 65 20 h: No such file
00000020 6f 72 20 64 69 72 65 63 74 6f 72 79 0d 0a or directory..
正在调查中...
答案1
这很好,因为我只针对 FTP,但是用户 1 可以访问比所需主目录多得多的内容,这并不好。
FTP 和 SFTP 彼此之间没有任何关系,除了它们都可以用于传输文件。
无论如何,对于 SFTP 登录,我使用它sshd_config
:
Subsystem sftp internal-sftp -f AUTH -l INFO
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
AuthorizedKeysFile %h/authorized_keys
Match
可以使用 sftp 的用户属于 sftp 组。请确保为他们提供 shell /sbin/nologin
。他们将从 OpenSSH 获得所需的内容。
最后,如果主目录不存在,我认为您也会断开连接。以及如果用户无权访问主目录。主目录的权限应该是,700
用户和组也应该是用户的用户名和组名。在您的示例中:
1049327 drwx------. 2 user1 user1 4,0K oct 8 2013 user1
这一切都与 CentOS 有关,我不知道这是否适用于另一个 tux。
答案2
您混淆了 chroot 以及 putty 和 filezilla 的不同之处。putty 需要远程 shell 或“假”shell,一些命令。filezilla 需要 sftp。
所以你必须决定。如果你只想要 sftp,你就不能使用 putty。如果你想使用 sftp,请阅读 man sshd,你可能想把 internal-sftp 放在那里,因为它不需要完整的 chroot 设置。如果你把完整路径放到 sftp-server,你必须把所有的库和其他必需文件放到 chroot 中。
Filezilla 输出清楚地显示您没有正确配置 chroot。