将 `ForceCommand` 放入用户特定的配置文件中

将 `ForceCommand` 放入用户特定的配置文件中

我试图限制 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 UserMatch Group;重点是把它放在一个特定于用户的配置。

答案1

关于/home/user/.ssh/config,这纯粹是针对 ssh 客户端本身,在机器上使用发起ssh 连接。所以这里没用。

问题已更新,表示您已经排除了添加Match UserMatch Group条目的可能性/etc/ssh/sshd_config,因为您想要特定于用户的配置。

如果您希望某些用户被chroot到他们的主目录中,您可以利用组成员身份,例如这样,特别是使用Match GroupChrootDirectory %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 UserMatch Group;关键是将其放在特定于用户的配置中。

类似的东西ForceCommand可以限制用户可以做的事情。这在放置在用户主目录中的配置文件中效果不佳,因为他们几乎肯定能够更改配置,或者至少使其无法访问(例如mv ~/.ssh ~/.ssh_disabled)。

当然,.ssh/config也是针对SSH的配置客户,也就是说,它会修改您建立 SSH 连接时发生的情况在......之外那个系统。限制用户必须发生在服务器上,并且sshd_config是唯一ForceCommand记录存在的地方。另外,正如您所说,Include仅存在于客户端配置中,因此您的选择是a)使用合适的命令将其放入计算机中ForceCommand,或者b)不要将其放在 任何地方。sshd_configMatchForceCommand

当然,您可以将 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

相关内容