我需要自定义 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. 变量中)。