如何为 ChrootDirectory 用户启用 bash(ssh_config)?

如何为 ChrootDirectory 用户启用 bash(ssh_config)?

我在文件末尾添加了“/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。

相关内容