SSH 重用连接
有的时候需要经常 ssh 连接到服务器上,比如,我push一个分支,然后合并并push,然后push tag,然后删除该分支。期间至少需要四次SSH连接(不要问我为什么会有这么复杂的流程。。。)
另外,之前通过跳板机直连线上机器的方法,在差的网络环境中仍然很慢,也在考虑如何加速的问题。
综上,每次SSH连接的建立,需要首先建立TCP连接,然后认证之。有的时候网络慢,搞得这个过程很不爽,故有此文。
ssh_config的文档中有如下ControlMaster和ControlPath两个参数。
ControlMaster表示是否需要多个SSH会话重用一个网络连接,这个当然要开启;ControlPath表示这个网络连接绑定到的本地sock地址。
我的配置如下:
1 | ControlMaster auto |
以time ssh remote_host -C pwd
命令为例,在默认配置下,一般执行时间是1s;如果开启了ControlMaster,首次连接的时间是1.2s(事实上,我也不知道为什么会稍微多一点);如果重用了之前的连接,则时间降为0.6s。
Tips:
ssh -O check reomte_host
可以看到共享的连接是不是还在;ssh -O exit reomte_host
可以直接关闭后台共享的连接(会关闭现有的ssh会话);ssh -O stop remote_host
则表示后台共享的连接不会再接受新的会话(停止监听sock文件,下次的连接仍然会创建同样的sock文件)。
另外ControlPersist表示连接失效时间,也建议设置一个合理的值。