Joel Rivest Asked: 2022-01-12 13:23:59 +0800 CST2022-01-12 13:23:59 +0800 CST 2022-01-12 13:23:59 +0800 CST 在 ssh authorized_key 中使用 sleep 命令来阻止用户的操作 772 我正在设置一个 Ubuntu 服务器来接收来自客户端的 ssh 连接,这样我就可以连接回他们的机器(反向 SSH 隧道)。我搜索了一种禁止客户端在服务器上执行任何操作的方法,并找到了不同的解决方案,但似乎没有一个比在服务器上配置特定客户端的授权密钥更简单,方法是添加: command="sleep x seconds" 我是否遗漏了一些重要的东西,会使该解决方案不是一个好的解决方案? ssh sleep 1 个回答 Voted Best Answer roaima 2022-01-12T14:49:00+08:002022-01-12T14:49:00+08:00 如果限制是针对多个用户的,我会在 , 中设置一个Match块/etc/sshd_config,以对该组用户应用限制。如果限制是针对特定的 ssh 密钥,我会考虑采用您建议的路线并阻止~/.ssh/authorized_keys文件中的命令。 Match挡住/etc/sshd_config 阅读 的文档Match,并像往常一样更改连接子系统的ssh工作方式时,确保您在远程系统上有可用的 root 登录以恢复或调整任何更改。 # Add users to the UNIX group "restrictedusers" Match Group restrictedusers AllowTCPForwarding yes X11Forwarding no AllowAgentForwarding no ForceCommand echo No logins permitted 键入~/.ssh/authorized_keys command通过将访问控制选项添加到现有或新密钥条目的前缀,不仅可以强制,而且可以禁用 X11Forwarding、代理转发等。确保您在远程系统上有一个可用的登录名来恢复或调整对文件的任何更改。 restrict,port-forwarding,command="echo No logins permitted" ssh-ed25519 ed25519-public-key-code-goes-here... 在这两种情况下,一旦设置好,调用者需要为您设置反向回调。例如,这个将remoteHost的本地端口连接50123/tcp到调用者的本地端口123/tcp ssh -fN -R 50123:localhost:123 remoteHost 最重要的是,这一切都可以在调用者的~/.ssh/configfor中准备好remoteHost,这样他们就只需要ssh remoteHost启动回调: Host remoteHost ForkAfterAuthentication yes SessionType none # listenPort targetHost:targetPort RemoteForward 50123 localhost:123
如果限制是针对多个用户的,我会在 , 中设置一个
Match
块/etc/sshd_config
,以对该组用户应用限制。如果限制是针对特定的 ssh 密钥,我会考虑采用您建议的路线并阻止~/.ssh/authorized_keys
文件中的命令。Match
挡住/etc/sshd_config
阅读 的文档
Match
,并像往常一样更改连接子系统的ssh
工作方式时,确保您在远程系统上有可用的 root 登录以恢复或调整任何更改。键入
~/.ssh/authorized_keys
command
通过将访问控制选项添加到现有或新密钥条目的前缀,不仅可以强制,而且可以禁用 X11Forwarding、代理转发等。确保您在远程系统上有一个可用的登录名来恢复或调整对文件的任何更改。在这两种情况下,一旦设置好,调用者需要为您设置反向回调。例如,这个将
remoteHost
的本地端口连接50123/tcp
到调用者的本地端口123/tcp
最重要的是,这一切都可以在调用者的
~/.ssh/config
for中准备好remoteHost
,这样他们就只需要ssh remoteHost
启动回调: