如何在 Linux 上使用 OpenSSH 多路复用器加速 OpenSSH 连接


本文将帮助我们了解通过建立主会话,然后使用多路复用器建立后续会话来多路复用 SSH 会话,从而加快 Linux 上 SSH 连接的速度。

多路复用

多路复用只不过是在单个 SSH 连接上发送多个或更多数据,并且可以重用现有的 TCP/IP 连接用于多个并发 SSH 连接。这将减少在服务器上创建新 TCP 连接的负载。

SSH 连接上多路复用器的优点。

  • 它使用现有的 *inx 套接字进行连接。
  • 它使用现有的 TCP/IP 连接,不再需要新的 TCP/IP。
  • 不再需要密钥交换。
  • 无需身份验证。

配置多路复用

如果您的主目录中 .ssh 文件夹中不存在配置文件,请以 600 权限(仅您可读写)创建它。

编辑用户的 .ssh/config 文件 –

# vi ~/.ssh/config
ControlMaster auto
   ControlPath ~/.ssh/master-%r@%h:%p.socket
   ControlPersist 30m

示例配置文件 –

Host *
   ControlPath ~/.ssh/master-%r@%h:%p
   ControlMaster auto
   ControlPersist 30m

说明

Host * or Host client : This start SSH configuration.
ControlPath ~/.ssh/ssh-mux-%r@%h:%p : This specifies the path to the control *inx socket to be used for connection and sharing is as described in the above.
The variables
‘%r’ - remote ssh username
‘%h’ - remote ssh host
‘%p’ - remote ssh port
You need to set all of these three variables for this option.

ControlMaster auto: This enables the sharing of multiple sessions over a single network connection. When this set to yes, the SSH will listen for connections on a control socket specified using the ControlPath argument.
When this set to auto, ssh will try to use a master connection, but the connection falls back to creating a new one connection, if one does not exist.
ControlPersist 30m: This option specifies that the master connection should remain open in the background for 30 minutes.
If the connection is with no clients, then the backgrounded master connection will automatically terminate after it had remained idle for 30 minutes.

如何连接

从客户端机器使用以下命令连接到服务器。

#ssh [email protected]
The authenticity of host '192.168.2.225 (192.168.2.225)' can't be established.
RSA key fingerprint is f7:c8:62:c9:6f:02:50:8e:14:cd:3a:95:ad:b1:67:af.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.225' (RSA) to the list of known hosts.
[email protected]'s password:
Last login: Fri Apr 22 13:26:56 2016 from 192.168.1.84

如何验证多路复用器是否正在工作?

转到 SSH 服务器并运行以下命令。

# lsof -U | grep master
ssh       69518       root       4u       unix0xffff8801378f7580    0t0 607468 /root/.ssh/[email protected]
ssh       69518       root       5u       unix0xffff880139986b80    0t0 607482 /root/.ssh/master [email protected]

我们可以使用另一个命令检查

# ssh -O stop 192.168.2.225
Master running (pid=69518)
#

如果我们使用许多终端或脚本通过 OpenSSH 连接到同一服务器,则可以使用多路复用来加快它们的速度,这使得第一个连接成为主连接,并允许其他连接共享其到服务器的 TCP 连接。

更新于: 2020年1月20日

368 次查看

开启你的职业生涯

通过完成课程获得认证

开始
广告