在 sshauthorized_key 中使用 sleep 命令来阻止用户的操作

在 sshauthorized_key 中使用 sleep 命令来阻止用户的操作

我正在设置一个 Ubuntu 服务器来接收来自客户端的 ssh 连接,这样我就能够连接回他们的机器(反向 SSH 隧道)。我搜索了一种方法来禁止客户端在服务器上执行任何操作,并且找到了不同的解决方案,但似乎没有一个解决方案像通过添加以下内容来配置服务器上特定客户端的authorized_key那么简单:

command="sleep x seconds"

我是否错过了一些重要的事情,导致该解决方案不是一个好的解决方案?

答案1

如果限制是针对多个用户的,我会Match在 中设置一个块/etc/sshd_config,以对该组用户应用限制。如果限制是针对特定的 ssh 密钥,我会考虑采用您建议的路线并阻止文件中的命令~/.ssh/authorized_keys

Match阻止/etc/sshd_config

阅读 的文档Match,并像往常一样在更改连接子系统(如)的ssh工作方式时,确保您在远程系统上具有可用的根登录名以恢复或调整任何更改。

# 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

相关内容