×

利用 ControlMaster 做SSH连接重用

2022-06-29 16:20:14 Falcon

在不进行任何 SSH 设置时,默认每次使用 SSH 连接到同一台远端服务器时就是建立一个全新的连接,所以相同的帐号密码或者认证密钥都得再认证一次,而远端服务器也必须为了维持这些连接而耗用系统资源。

而 SSH 有个设置称为 ControlMaster 让 SSH 连接使用者可以重复使用已建立好的连接,所以建立多个连接到同一台远端服务器时都能够利用已经存在的连接(称为 master connection),连带的优点是不需要再认证一次,省下一些建立连接的时间与远端服务器的系统资源。

设置 ~/.ssh/config

要启用 ControlMaster 的话,只要在 ~/.ssh/config 加上以下设置即可:

Host *

    ControlMaster auto

    ControlPath /tmp/ssh-%r@%h:%p

    ControlPersist 600

稍微解释一下上述的设置。

ContrlMaster auto 使用 master connection ,如果 master connection 已经不存在的话则另外建立一个新的连接。

ControlPath /tmp/ssh-%r@%h:%p 指定 control socket 存放的路径与文件名称, %r 远端服务器使用者名称(the remote username), %h 远端服务器的 hostname , %p 远端服务器的端口(port) 。

ControlPersist 600 让 master connection 关掉之后仍存在 600 秒,只要一直有其他连接还在使用该 master connection 或者 600 秒内有新连接建立,该 master connection 就不会被关闭。如果没有设置,只要建立 master connection 的连接关掉之后,所有其他使用该 master connection 的连接也会立即断线。

 

References

https://linux.die.net/man/5/ssh_config

本文收录于