在服务器上,我需要 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,*"
提示发现于本文在红帽客户门户上。