加速到同一服务器的多个 SSH 连接

作者:Don Marti

如果您运行大量需要与同一服务器建立 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 sshman ssh_config.

加载 Disqus 评论