首页 > 代码库 > OpenSSH的Multiplexing配置
OpenSSH的Multiplexing配置
设置 Session Multiplexing
在客户端节点如下配置/etc/ssh/ssh_config 或~/.ssh/config 就可以直接开启 Session Multiplexing 功能:
清单 1. 配置 Session Multiplexing
Host * #该部分的定义将应用到全部主机 ControlMaster yes #Session Multiplexing 开关 ControlPath ~/.ssh/master-%r@%h:%p #供 Session Multiplexing 使用的 Control Socket (Unix Socket) 路径 ControlPersist yes #是否开启后台 Control master 模式
成功开启后,无论从该客户端节点用同一用户向同一 SSH Server 节点发起多少次连接,都有且仅有一条连接被建立,负责该节点到该 Server 之间的所有 SSH 包文。
下面我们给出一个实际案例:如清单 2 所示,设有一个 SSH 服务器节点:9.115.241.18,一个 SSH 客户端节点:9.115.241.20。在客户端的 Session Multiplexing 开启的情况下,向服务器端建立若干个 SSH 会话,最后在客户端或服务器端检测实际存在的连接数,会发现整个过程仅仅有一条 TCP 被建立起来。
清单 2. Multiplexing 实际使用案例
# 注:以下的操作均在客户端节点(9.115.241.20)完成 # 建立一个连接到服务器端,定期执行 ls 命令打印出当前目录下的文件 $ ssh zhang@9.115.241.18 ‘while /bin/true; do ls; sleep 1; done > /dev/null‘ &[1] 11551 # 再建立另一个连接到服务器端,执行同样的操作 $ ssh zhang@9.115.241.18 ‘while /bin/true; do ls; sleep 1; done > /dev/null‘ &[2] 11638 # 最后,显示出当前节点接入服务器端(9.115.241.18)22 端口(SSH 协议)的所有连接 $ netstat -n | grep ‘9.115.241.18:22‘ tcp 0 0 9.115.241.18:22 9.115.241.20:52148 ESTABLISHED
由清单 2 最后的 netstat 命令可知,无论由客户端发起多少个 SSH 进程,都只会有一条连接建立起来,而这一条连接便承载了 9.115.241.20 到服务器端的所有 SSH 通讯。
例子
新建文件ip.txt
清单 3.ip.txt
127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1
新建脚本ssht.sh
清单 4.ssht.sh
#!/bin/bash while read line;do ssh -n $line "echo ok &>/dev/null" && echo -e "\e[1;32m OK \e[0m" || echo -e "\e[1;31m FAIL \e[0m" done < ip.txt
然后执行 time sh ssht.sh
清单 5.结果
OpenSSH的Multiplexing配置
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。