那篇文章还描述了如何获得一个chrooted shell访问权限,但由于你只想要一个仅限sftp的帐户,请按照以下说明进行操作:
编辑
/etc/ssh/sshd_config
并添加以下行:
SubSystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
找到行
UsePAM yes
并注释掉它。
#UsePAM yes
如果不禁用这个功能,我的SSH服务器在重新加载/重启时会崩溃。由于我不需要PAM的高级功能,这样就可以了。
为了增加安全性,限制可以登录的用户。如果你忘记将SFTP用户添加到组中,他们就可以获得免费的shell访问权限。这并不是一个好的情况。因为SSH不能同时使用和(登录必须满足两个规则),所以你需要创建一个额外的组,比如。将被允许通过SSH登录的用户(下面的)添加到该组中:
sudo groupadd ssh-users
sudo gpasswd -a youruser ssh-users
并将下一行添加到
/etc/ssh/sshd_config
中:
AllowGroups ssh-users sftp
现在继续修改用户主目录的权限,以允许进行chroot操作(例如用户
sftp-user
):
sudo chown root:sftp-user /home/sftp-user
sudo chmod 750 /home/sftp-user
创建一个目录,
sftp-user
可以自由地在其中放置任何文件。
sudo mkdir /home/sftp-user/public
sudo chown sftp-user: /home/sftp-user/public
sudo chmod 750 /home/sftp-user/public
如果你遇到任何问题,请检查/var/log/syslog和/var/log/auth.log以获取详细信息。使用ssh或sftp命令并加上-vvv选项来获取调试信息。对于sftp命令,该选项必须出现在主机之前,例如sftp -vvv user@host。