如何重用ssh连接

时间:2013-12-05 20:41:57

标签: ssh

我正在创建一个小脚本来更新一些远程服务器(2+)
我正在为每个服务器进行多次连接;有没有办法可以重用SSH连接,所以我不必一次打开太多?

3 个答案:

答案 0 :(得分:26)

如果您使用-M打开第一个连接:

ssh -M $REMOTEHOST

后来与$REMOTEHOST的连接将“捎带”主设备ssh建立的连接。最值得注意的是,不需要进一步的身份验证。有关详细信息,请参阅“ControlMaster”下的man ssh_config。使用-S指定共享套接字的路径;我不确定默认值是什么,因为我使用配置文件来配置连接共享。

在我的.ssh/config文件中,我有以下几行:

host *
  ControlMaster auto
  ControlPath ~/.ssh/ssh_mux_%h_%p_%r

这样,我就不必记得使用-M-S; ssh确定主机/端口/用户名组合是否已存在可共享连接,并在可能的情况下使用该连接。

此选项自2004年起在OpenSSH中提供。

答案 1 :(得分:12)

我更喜欢Puppet Labs https://puppetlabs.com/blog/speed-up-ssh-by-reusing-connections

中描述的方法

将这些行添加到ps1.println(); 并运行~/.ssh/config

mkdir ~/.ssh/sockets

阅读完整的博客文章,了解更多有用的信息,了解这些内容以及ssh在使用时的特性。我强烈建议您阅读博客,否则您可能会发现某些内容无法按预期发挥作用。

答案 2 :(得分:10)

或者,你可以这样做:

$ssh_conn="ssh -t -o ControlPath=~/.ssh/master-$$ -o ControlMaster=auto -o ControlPersist=60"

$ssh_conn user@server
  • ControlPath=~/.ssh/master-$$为ssh设置控制路径 连接限制连接重用到当前shell(通过 $$ PID)
  • ControlMaster=auto允许连接会话 使用ControlPath
  • 分享
  • ControlPesist=60设置金额 由于不活动,连接应保持打开的时间