我在设置带有 ChrootDirectory 的 sftp 时遇到了问题。我在其他发行版上进行了等效设置,但出于某种原因,我无法让它在 Redhat AMI 上运行。
我的 sshd_config 文件的更改如下:
Subsystem sftp internal-sftp
Match Group ftponly
PasswordAuthentication yes
X11Forwarding no
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
我的相关用户的家位于 /home/user,由 root 拥有。与 ftponly 组中的用户连接后,我被置于 / 中,没有任何权限,无法执行任何操作。
sftp bob@localhost
Connecting to localhost...
bob@localhost's password:
sftp> pwd
Remote working directory: /
我可以与不在 ftponly 组内的用户正常连接。
openssh 版本 5.3
我尝试了不同的权限,以及让用户拥有自己的主目录(出现写入失败:管道损坏错误),到目前为止,似乎没有任何效果。
我确信这是一个权限错误,或者是同样微不足道的事情,但此时我的眼睛开始变得呆滞,任何帮助都将不胜感激。
编辑:
James 和 Madhatter,感谢你们的澄清。chroot 把我放到 / 中让我感到困惑...只是没有仔细考虑。我添加了适当的目录和权限来获取读取权限。另一个关键部分是启用对 chrooted home 的写入权限:
setsebool -P ssh_chroot_rw_homedirs on
以便获得写入权限。我想我现在已经准备好了。谢谢你的帮助。
答案1
ChrootDirectory %h
将把用户主目录 chroot 到 /。我可能错了,但你无法执行任何操作的原因是 chroot jail 中不存在必要的支持文件。快速搜索将configure ssh chroot
我带到此页面http://www.techrepublic.com/blog/opensource/chroot-users-with-openssh-an-easier-way-to-confine-users-to-their-home-directories/229您可以在其中提供必要的文件。