为一系列命令启用SSH复用,然后closures它

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

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

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" 

最后,要closuresMultiplex ssh会话,我应该可以这样做:

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

不幸的是,运行ControlMaster=auto的第一个ssh命令在向ssh传递一个命令时,并没有在/home/justin/.ssh/sockets目录中保持一个活动的套接字。 它而是立即closures套接字。

这怎么可能?

看起来你忘了设置ControlPersist 。 如果没有设置,那么如果第一个会话closures,主连接将不会保持打开状态。

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

 ControlPersist 600