我刚刚尝试了以下操作来添加新用户、chroot 该用户并授予他通过 sftp 和 ssh 访问文件夹 /home/me/public_html 的权限:
##the following command are done by root or a sudo user
useradd <username>
##add password for new user
passwd <username>
## add user to sudo group which could be wheel or sudo depending on your setup
usermod -G wheel <username>
##add user to apache as the public html folder is part of that group
usermod -G apache <username>
##Edit sshd_config to chroot the user. Path here below is on Centos or Redhat and with nano editor up and running
nano /etc/ssh/sshd_config
##add the end of the file add
Match User <username>
ChrootDirectory /path/of/choice
ForceCommand internal-sftp
## control X and save
service sshd restart
在 sshd_config 中我现在有
Match User <username>
ChrootDirectory /home/me/public_html
ForceCommand internal-sftp 已被删除,因为没有必要根据下面的常见做法不允许 SSH 访问。
当我尝试登录时,我看到
ssh <username>@domain.com
debug1: Next authentication method: password
<username>@domain.com's password:
debug1: Authentication succeeded (password).
Authenticated to domain.com ([xx.xxx.xx.xxx]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
Write failed: Broken pipe
我在日志中使用 SFTP
Trace: Sent password
Trace: Access granted
Trace: Connection reset by peer
Error: Connection reset by peer
Error: Could not connect to server
答案1
设置 chroot 以进行常规 SSH 访问比设置 chroot 以进行 SFTP 访问要困难得多。“internal-sftp”功能不需要 SSH 服务器启动任何外部程序,因此 chroot 环境不必支持运行外部程序。要提供常规 SSH 访问,您必须使用其他文件配置 chroot 环境以使其启动外部程序。
设置 chroot 环境的细节取决于您运行的特定操作系统。以下是几个示例页面,它们应该可以让您了解需要做什么。
- http://allanfeid.com/content/creating-chroot-jail-ssh-access
- http://wiki.gentoo.org/wiki/Chroot(Gentoo Linux)
- https://www.gentoo.org/proj/en/base/x86/chroot.xml(再次是 Gentoo)
- http://www.cyberciti.biz/tips/howto-linux-unix-rssh-chroot-jail-setup.html
- https://help.ubuntu.com/community/BasicChroot(Ubuntu)
答案2
ForceCommand 内部 sftp
如果强制使用 internal-sftp,则将无法通过 ssh 进入系统。
您可能还遇到其他配置问题,例如我预计您没有满足文件用户:组所有权要求 - 从文档中...
ChrootDirectory 指定身份验证后 chroot(2) 的路径。此路径及其所有组件必须是 root 拥有的目录,任何其他用户或组都无法写入。chroot 后,sshd(8) 将工作目录更改为用户的主目录。