为一系列命令启用 SSH 多路复用,然后关闭它

为一系列命令启用 SSH 多路复用,然后关闭它

我正在尝试为一系列连续运行的命令创建多路复用 ssh 连接,然后在一系列命令完成后关闭多路复用会话。

根据文档,第一个连接应该启动控制主机:

ssh -o "ControlMaster=auto" -S /home/justin/.ssh/sockets/multiplex_ssh.sock [email protected] "uptime"

然后其余的命令只需传递:

ssh -S /home/justin/.ssh/sockets/multiplex_ssh.sock [email protected] "free -m"
ssh -S /home/justin/.ssh/sockets/multiplex_ssh.sock [email protected] "hostname"
ssh -S /home/justin/.ssh/sockets/multiplex_ssh.sock [email protected] "date"

最后,要关闭多路复用 ssh 会话,我应该可以执行以下操作:

ssh -O exit -S /home/justin/.ssh/sockets/multiplex_ssh.sock [email protected]

不幸的是,在将命令传递给 ssh 时,运行的第一个 ssh 命令ControlMaster=auto不会在目录中保持套接字处于活动状态/home/justin/.ssh/sockets。相反,它会立即关闭套接字。

这怎么可能?

答案1

看起来您忘记设置了ControlPersist。如果未设置,则在第一个会话关闭时主连接将不会保持打开状态。

例如,您可以设置$HOME/.ssh/config

ControlPersist 600

相关内容