Filezilla 或 PuTTY:我收到“授予访问权限”的提示,随后收到“服务器意外关闭网络连接”的提示。如何排除故障?

Filezilla 或 PuTTY:我收到“授予访问权限”的提示,随后收到“服务器意外关闭网络连接”的提示。如何排除故障?

以下是 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。

相关内容