我在文件末尾添加了“/etc/ssh/sshd_config”
Match Group ftpusers
ChrootDirectory /home/ftpusers/
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
我想做什么?我已限制该组中的用户只能访问该目录,当用户使用 sftp 时此方法有效,但当他们使用 ssh 连接时此方法无效。
当他们尝试连接时收到此错误:
/bin/bash: No such file or directory
这可能是因为我已将 ChrootDirectory 添加到该组的 ssh 配置中。
还有其他方法可以让他们使用 bash 并将 ChrootDirectory 保留在 ssh 配置中吗?
我尝试将 --bind /bin 文件夹挂载到 /home/usersftp,然后为该组中的用户更改 /etc/passwd 中的 bash 路径,但仍然出现错误。
操作系统:Ubuntu 服务器 16.04
谢谢
答案1
您应该了解一下 chroot 是什么。该命令chroot
将根目录更改/
为另一个目录。因此,如果您将用户的 chroot 设置为 ,/home/usersftp
并且希望他们能够打开 bash,则 bash 需要位于/home/usersftp/bin/bash
。
至于你的问题:
还有其他方法可以让他们使用 bash 并将 ChrootDirectory 保留在 ssh 配置中吗?
当然,但你需要建立一个适当的 chroot 环境。在这里解释这一点有点超出范围,互联网上有无数的例子,我相信 serverfault 上也有一些。
但作为起点,您可以使用包构建一个 chroot debootstrap
。
答案2
/bin/bash
绑定挂载实际上可能有效,但是当您绑定/bin/
到时,您需要使用登录 shell 的新路径,该路径可能是/home/usersftp/bin/
。
另一方面,如果您只想使用该帐户进行文件传输,则可以使用限制性 shell 而不是 chroot,例如 rssh。