设置 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' &[]
# 再建立另一个连接到服务器端,执行同样的操作
$ ssh zhang@9.115.241.18 'while /bin/true; do ls; sleep 1; done > /dev/null' &[]
# 最后,显示出当前节点接入服务器端(9.115.241.18) 端口(SSH 协议)的所有连接
$ netstat -n | grep '9.115.241.18:22'
tcp 9.115.241.18: 9.115.241.20: 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.结果

 OK
OK
OK
OK
OK
OK
OK real 0m17.460s
user 0m1.109s
sys 0m0.607s

参考资源

https://www.ibm.com/developerworks/cn/opensource/os-cn-openssh-multiplexing/index.html?ca=drs-&utm_source=tuicool&utm_medium=referral

OpenSSH多路复用Multiplexing配置的更多相关文章

  1. 静态NAT、动态NAT、PAT(端口多路复用)的配置

    静态NAT.动态NAT.PAT(端口多路复用)的配置   NAT的实现方式有三种,即静态转换Static Nat.动态转换Dynamic Nat 和 端口多路复用OverLoad.    静态转换 ( ...

  2. Windows上安装配置SSH教程(2)——在Windows XP和Windows 10上安装并配置OpenSSH for Windows

    知识点汇总:http://www.cnblogs.com/feipeng8848/p/8559803.html ------------------------ 安装方式有3种: (1)Windows ...

  3. openssh 在32位、64位操作系统上的安装配置

    openssh是安装在windows系统上的提供SSH服务的服务端软件,可以提供安全的命令行远程连接管理.下面介绍下openssh成功安装使用的操作步骤. 工具/原料   openssh window ...

  4. 【Http】队头阻塞(Head of line blocking)多路复用(Multiplexing)

        图中第一种请求方式,就是单次发送request请求,收到response后再进行下一次请求,显示是很低效的. 于是http1.1提出了管线化(pipelining)技术,就是如图中第二中请求方 ...

  5. centos8上配置openssh的安全

    一,openssh服务版本号的查看 1,查看当前sshd的版本号 : [root@yjweb ~]# sshd --help unknown option -- - OpenSSH_7.8p1, Op ...

  6. Flume NG 配置详解(转)

    原文链接:[转]Flume NG 配置详解 (说明,名词对应解释 源-Source,接收器-Sink,通道-Channel) 配置 设置代理 Flume代理配置存储在本地配置文件.这是一个文本文件格式 ...

  7. Flume NG 配置详解

    配置 设置代理 Flume代理配置存储在本地配置文件.这是一个文本文件格式,是Java属性文件格式.在相同的配置文件,可以指定一个或多个代理的配置.配置文件包括每个源,接收器和通道,把它们连接在一起, ...

  8. 部署openssh服务器

    1.安装服务器端软件包 先查看是否已经安装openSSH服务器软件包 # rpm -qa|grep openssh openssh-askpass-.3p1-.el6_6..x86_64 openss ...

  9. sourcetree和gitlab配置图解

    一.前期准备安装 1.git客户端(1.产生gitlab服务端和本地git相互传输时所需要校验的私钥和公钥    2.直接在Idea中使用git提交和push代码,当然也可以用sourcetree提交 ...

随机推荐

  1. C5-fasterrcnn-小象cv-code

    1.# Path to Shapes trained weightsSHAPES_MODEL_PATH = os.path.join(ROOT_DIR, "mask_rcnn_shapes. ...

  2. HDU 1425 sort C语言实现快速排序

    AC代码:sort Time Limit: 6000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  3. C++学习(三十)(C语言部分)之 栈和队列

    数据结构1.保存数据 2.处理数据数组+操作增查删改 栈和队列是一种操作受限的线性表 栈 是先进后出 是在一端进行插入删除的操作--->栈顶 另一端叫做栈底(栈和栈区是两个概念)(是一种数据结构 ...

  4. 【HDOJ1045】【DFS】

    http://acm.hdu.edu.cn/status.php?user=MekakuCityActors&pid=1045&status=5 Fire Net Time Limit ...

  5. linux---三剑客

    linux的三剑客分别为awk/sed/grep,是运维人员必不可少的常用命令. 一:awk取列 awk ‘{print $1 “ ” $2}’ old.txt awk /aaa/ old.txt 二 ...

  6. LeetCode - Max Area of Island

    Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) conn ...

  7. 【BZOJ3992】【SDOI2015】序列统计

    数论劲啊 原题: 小C有一个集合S,里面的元素都是小于M的非负整数.他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数列中的每个数都属于集合S. 小C用这个生成器生成了许多这样的数列.但是小 ...

  8. 【HAOI2011】problem b

    数论好劲啊 原题: 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 1≤n≤50000,1≤a≤b ...

  9. C++中的显式类型转换

    一.学习总结 1.C++中额外提供的类型转换有 (1) reinterpret_cast: 格式:reinterpret_cast<type-id> (expression)①type-i ...

  10. 06SVM线性不可分时scikit-learn实现

    https://blog.csdn.net/weixin_40123108/article/details/84378202 In [5]: from time import time import ...