加速到同一服务器的多个 SSH 连接
于 2008 年 12 月 26 日
如果您运行大量需要与同一服务器建立 OpenSSH 连接的终端选项卡或脚本,您可以使用多路复用加速它们:使第一个连接充当主连接,并让其他连接共享其与服务器的 TCP 连接。
如果您的主目录中的 .ssh 目录中还没有配置文件,请创建它并设置权限为 600:只能由您读取和写入。
然后,添加以下行
Host * ControlMaster auto ControlPath ~/.ssh/master-%r@%h:%p
ControlMaster auto告诉 ssh 尝试启动一个主连接(如果未运行),否则使用现有的主连接。ControlPath是 ssh 进程之间进行通信的套接字的位置。%r, %h和%p将被替换为您的用户名、您要连接的主机和端口号——只有来自同一用户到同一主机在同一端口上的 ssh 会话才能或应该共享一个 TCP 连接,因此每组多路复用的 ssh 进程都需要一个单独的套接字。
为了确保它有效,请启动一个 ssh 会话并保持运行。然后,在另一个窗口中,使用 -v 选项打开另一个连接
~$ ssh -v example.com echo "hi"
并且,您将看到几行消息,而不是正常 ssh 会话的冗长详细消息,结尾
是
debug1: auto-mux: Trying existing master hi
非常快。
如果您必须连接到不支持多路复用连接的旧 ssh 实现,您可以创建一个单独的 Host 部分
Host antique.example.com ControlMaster no
有关更多信息,请参见man ssh和man ssh_config.