Linux/Unix:OpenSSH多路复用器可加速OpenSSH连接
时间:2020-01-09 10:42:19 来源:igfitidea点击:
如何通过设置主会话,然后让后续会话通过主会话来加快SSH链接的速度,从而在Linux或者类似Unix的操作系统上加快SSH连接?复用不过是通过单个连接发送多个ssh连接而已。
OpenSSH可以将现有的TCP连接重用于多个并发的SSH会话。这导致减少了创建新的TCP连接的开销。首先,您需要设置一个ControlMaster以便在本地打开Unix域套接字。 所有ssh命令中的其余命令都通过Unix域套接字连接到ControlMaster。
ControlMaster为我们提供以下好处:
- 使用现有的unix套接字
- 没有新的TCP/IP连接
- 无需密钥交换
- 无需身份验证等
如何设置多路复用
编辑$HOME/.ssh/config
,执行:
vi ~/.ssh/config
追加以下配置:
Host * ControlMaster auto ControlPath ~/.ssh/master-%r@%h:%p.socket ControlPersist 30m
这是另一个示例:
Host server1 HostName server1.theitroad.local Port 2222 ControlPath ~/.ssh/ssh-mux-%r@%h:%p ControlMaster auto ControlPersist yes
保存并关闭文件。
其中:
Host *
或者Host server1
:开始ssh配置。HostName server1.theitroad.local
:真实的主机名ControlPath ~/.ssh/ssh-mux-%r@%h:%p
:如上所述,指定用于连接共享的控制unix套接字的路径。变量%r,%h,%p分别引用远程ssh用户名,远程ssh主机和远程ssh端口。您需要设置所有这三个变量。ControlMaster auto
:允许通过单个网络连接共享多个会话。设置为yes时,ssh将侦听使用ControlPath参数指定的控制套接字上的连接。设置为auto时,ssh将尝试使用主连接,但如果尚不存在,则退回到创建新连接。ControlPersist 10m
:指定主连接应在后台保持打开状态10分钟。没有客户端连接时,后台的主连接在闲置10分钟后将自动终止。如果设置为"是",则主连接将无限期地保留在后台(直到终止或者关闭)
如何验证Multiplexer是否正常工作?
使用以下任一命令来验证Multiplexer是否正常运行:
$ lsof -U | grep master
或者
$ ssh -O check [email protected]
如何告诉主连接不接受进一步的多路复用请求?
请使用以下语法:
$ ssh -O stop host $ ssh -O stop [email protected]
传递退出选项而不是停止以取消所有现有连接,包括主连接:
$ ssh -O exit host $ ssh -O exit [email protected]
如何进行端口转发?
语法如下,使用-L将本地主机上的端口3128转发到远程主机上的端口3128:
ssh -O forward -L 3128:localhost:3128 v.server1
您还可以指定用于共享连接的控制套接字的位置:
ssh -O forward -L 3128:localhost:3128 -S $HOME/.ssh/[email protected]:22 v.server1
SSH多路复用的主要优点是,消除了创建新TCP连接的开销。
使用多路复用可以大大加快重复打开新连接的SSH客户端活动。