我试图限制 SSH 隧道用户。
# sudo cat /home/user/.ssh/config
Banner none
ChrootDirectory /home/%u
PasswordAuthentication no
AllowTcpForwarding yes
X11Forwarding no
AllowAgentForwarding no
ForceCommand /bin/false
然而,这些似乎都没有任何效果。
当我/home/user/.ssh/authorized_keys
在前面添加它时no-pty,no-agent-forwarding,no-X11-forwarding,command="/bin/false"
,它可以工作,但我还想将这些指令包含到永久配置中。
是否可以在不更新的情况下以这种方式限制用户/etc/ssh/sshd_config
?
更新我知道Match User
和Match Group
;重点是把它放在一个特定于用户的配置。
答案1
关于/home/user/.ssh/config
,这纯粹是针对 ssh 客户端本身,在机器上使用发起ssh 连接。所以这里没用。
问题已更新,表示您已经排除了添加Match User
或Match Group
条目的可能性/etc/ssh/sshd_config
,因为您想要特定于用户的配置。
如果您希望某些用户被chroot到他们的主目录中,您可以利用组成员身份,例如这样,特别是使用Match Group
和ChrootDirectory %h
。
Match Group jailed
Banner none
ChrootDirectory %h
PasswordAuthentication no
AllowTcpForwarding yes
X11Forwarding no
AllowAgentForwarding no
ForceCommand /bin/false
答案2
# sudo cat /home/user/.ssh/config
更新我知道
Match User
和Match Group
;关键是将其放在特定于用户的配置中。
类似的东西ForceCommand
可以限制用户可以做的事情。这在放置在用户主目录中的配置文件中效果不佳,因为他们几乎肯定能够更改配置,或者至少使其无法访问(例如mv ~/.ssh ~/.ssh_disabled
)。
当然,.ssh/config
也是针对SSH的配置客户,也就是说,它会修改您建立 SSH 连接时发生的情况在......之外那个系统。限制用户必须发生在服务器上,并且sshd_config
是唯一ForceCommand
记录存在的地方。另外,正如您所说,Include
仅存在于客户端配置中,因此您的选择是a)使用合适的命令将其放入计算机中ForceCommand
,或者b)不要将其放在 任何地方。sshd_config
Match
ForceCommand
当然,您可以将 SSH 服务器的配置从不同的文件与某些外部系统放在一起,其中最简单的类似于
cat /etc/ssh/sshd_config.d/*.conf > /etc/ssh/sshd_config
.
答案3
我首先想到的是:使用Include
指示。
然而,它只在内部起作用/etc/ssh/ssh_config
(ssh 作为客户端),当调用时/etc/ssh/sshd_config
(ssh 作为服务器),抛出一个“错误的配置选项:包括”错误 - 显然,它只是为客户端实现的
问题是:我需要的指令(例如ForceCommand
)是针对服务器端的,因此在添加到 时被忽略ssh_config
。