sshfs:将所有非 root 用户 chroot 到特定目录

sshfs:将所有非 root 用户 chroot 到特定目录

在服务器上,我需要 root 不受限制的 ssh 访问,并限制所有其他用户的访问。

我想限制所有非 root 用户:

  • 没有 ssh 登录
  • 只允许/mnt/data/使用挂载sshfs

我看到sshd_config允许使用Match User,即:

Match User john
  ChrootDirectory /mnt/data/
  ForceCommand internal-sftp
  AllowTCPForwarding no
  X11Forwarding no

但如何匹配除 root 之外的所有用户?

答案1

ssh的配置文件中的 Match 指令支持否定。但看起来否定条件有点sshd_config棘手:你必须写

Match User="!root,*"

将后续指令应用于除 root 之外的所有用户。

这是相关文档:来自man sshd_config

Match 引入条件块。
...
匹配模式可以由单个条目或逗号分隔的列表组成,并且可以使用 ssh_config(5) 的模式部分中描述的通配符和否定运算符。

并来自man ssh_config

模式
模式由零个或多个非空白字符、“*”(匹配零个或多个字符的通配符)或“?”组成(与一个字符完全匹配的通配符)。
...
请注意,否定匹配本身永远不会产生肯定结果。
例如,尝试将“host3”与以下模式列表进行匹配将会失败:

from="!host1,!host2"

这里的解决方案是包含一个将产生正匹配的术语,例如通配符:

from="!host1,!host2,*"

提示发现于本文在红帽客户门户上。

相关内容