一个 ssh 用户如何 chroot 到他们的主目录?
这是我在 sshd_config 文件中设置的内容:
ChrootDirectory %h
Subsystem sftp /usr/libexec/openssh/sftp-server
ssh版本是6.6.1
这是我尝试登录时遇到的错误:
Could not chdir to home directory /home/user: No such file or directory
/bin/bash: no such file or directory
答案1
如果您想将用户 chroot 到他们的目录,您需要有 shell 以及他们需要在目录中执行的其他内容。这就是你的错误所说的。 Chroot 正在将 root 更改为 /home/user,然后尝试在 /home/user/bin/bash 中查找 /bin/bash (用户选择的 shell),失败并报告错误。
答案2
第一条错误消息(“无法chdir
...”)来自Chroot目录在你的sshd_config
。从文档中:
Chroot目录
chroot(2)
指定身份验证后的目录路径名。路径名的所有组成部分必须是 root 拥有的目录,任何其他用户或组都不可写入。 chroot 后,sshd(8)
将工作目录更改为用户的主目录。
后尝试 chroot 是当出现无法找到bash
.这与没有完整的 chroot 环境设置有关(请参阅 的文档chroot(2)
)。
如果您希望用户的交互环境是chroot
“d”(而不仅仅是“d sftp
”),那么您需要做很多工作。根据您的最终目标,您可能只想简单地使用受限 shell(查看bash(1)
并vim(1)
搜索“restricted”以找到有关如何设置的一些想法)。
我发现了一些其他类似问题的参考资料askubuntu.com等等archlinux.org(请务必滚动到第二个目录的底部,了解为什么该目录必须由 root 拥有的说明)。