OpenSSH:如何在 ssh 连接上运行命令

OpenSSH:如何在 ssh 连接上运行命令

我需要自定义 OpenSSH 服务器,以便当与服务器建立新的 SSH 连接时,它会运行一些命令(例如运行 bash 脚本)。该命令应该为服务器“准备”SSH 连接。

所以,从客户端来看,这只是一个普通的 SSH 连接:ssh [email protected]

但在服务器端,它运行命令,然后允许 SSH 会话启动。

这可以通过 OpenSSH 实现吗?或者我需要编写自己的 SSH 服务器吗?

当 SSH 连接终止时可以做同样的事情吗?

答案1

也许我误解了你的意思,但如果你想在服务器上下文中运行命令而不是ForceCommand为用户连接运行命令,你可能需要使用套接字激活的 SSHD 安装,如下所述:

http://0pointer.de/blog/projects/socket-activated-containers.html

如果您想在sshd启动之前运行脚本,请使用多个ExecStart语句(其中sshd最后一个语句)。

答案2

是的,在 sshd_config 中使用 ForceCommand。 sshd_config 的手册页中有很好的描述:

https://linux.die.net/man/5/sshd_config

要允许连接继续,您只需SSH_ORIGINAL_COMMAND在包装器脚本中执行原始命令(存储在 env. 变量中)。

相关内容