在debian服务器上设置一个chroot sftp

我试图让用户“用户”通过sftp或ssh访问我的服务器。 我想用chroot将它们监控到一个目录中。 我阅读这里的说明,但它不起作用。 我做了以下几点:

  1. useradd用户
  2. 修改/ etc / ssh / sshd_config并添加

    Match User user

    ForceCommand internal-sftp

    ChrootDirectory /home/duke/aa/smart到文件底部

  3. 将子系统行更改为Subsystem sftp internal-sftp

  4. /etc/init.d/ssh restart启动sshd

  5. 使用PuTTY作为用户“user”以ssh身份login

Putty说“服务器意外closures连接”。

这是为什么呢?如何解决?

编辑

遵循下面的build议,我已经使sshd_config的底部看起来像:

 Match User user ChrootDirectory /tmp 

但没有变化。 我确实得到一个密码确定,但我不能通过SSH连接,也不能通过SFTP连接。 是什么赋予了?

您设置为chroot的目录必须由root拥有,并拥有755个权限。

这是我用于我的设置

 Match user sftpuser ChrootDirectory /home/sftpuser AllowTCPForwarding no X11Forwarding no ForceCommand internal-sftp 

在家

 drwxr-xr-x 5 root users 4096 Jan 29 10:31 sftpuser 

在/ home / sftpuser中

 drwx------ 2 sftpuser users 4096 Jan 29 10:52 sftpuser 

这个chroot把它们放到/ home / sftpuser目录下,但是因为他们没有写入权限,所以我创build了第二个sftpuser目录供他们写入。

我认为问题出现在ChrootDirectory /home/duke/aa/smart 。 问题与权限有关。 您试图login到框中的用户没有我认为的可执行权限。 你可以尝试改变这个像/tmp这样的/tmp ,每个用户都有完全的权限。

检查你的/var/log/auth.log是否有ssh错误。

这可能是一个权限错误。 chroot目录必须由root拥有。

仅供参考,我的工作configuration看起来像这样(我更喜欢使用组访问,而不是用户访问):

 Subsystem sftp internal-sftp AllowGroups sshusers sftponly Match group sftponly ChrootDirectory %h X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp