我正在尝试限制 SSH-tunnel user。
# 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
; 关键是要在特定于用户的配置中使用它。
关于
/home/user/.ssh/config
,这纯粹是 ssh 客户端本身,在启动ssh 连接的机器上使用。所以在这里没用。问题已更新,说您已经打折了添加
Match User
或Match Group
条目的前景/etc/ssh/sshd_config
,因为您需要特定于用户的配置。如果您希望某些用户被 chroot 到他们的主目录,您可以利用组成员身份,例如这个,特别是使用
Match Group
andChrootDirectory %h
。类似的东西
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
.首先想到的是:使用
Include
指令。但是,它只能在
/etc/ssh/ssh_config
(ssh as a client) 内部工作,并且当在/etc/ssh/sshd_config
(ssh as a server) 中调用时,会抛出“ Bad configuration option: include ”错误 - 显然,它仅针对客户端实现问题是:我需要的指令(例如
ForceCommand
)是针对服务器端的,因此在添加到ssh_config
.