Linux / Unix:OpenSSH 多路复用器可加速 OpenSSH 连接
如何通过设置主会话来多路复用 SSH 会话,然后让后续会话通过主会话来加快我在 Linux 或类 Unix 操作系统上的 ssh 连接?
多路复用只不过是通过单个连接发送多个 ssh 连接。OpenSSH可以重用现有的 TCP 连接进行多个并发 SSH 会话。这可以减少创建新 TCP 连接的开销。首先,您需要设置 ControlMaster 以在本地打开 Unix 域套接字。[donotprint]
[/donotprint]其余所有 ssh 命令都通过 Unix 域套接字连接到 ControlMaster。ControlMaster 为我们提供了以下好处:
多路复用只不过是通过单个连接发送多个 ssh 连接。OpenSSH可以重用现有的 TCP 连接进行多个并发 SSH 会话。这可以减少创建新 TCP 连接的开销。首先,您需要设置 ControlMaster 以在本地打开 Unix 域套接字。[donotprint]
教程详细信息 | |
---|---|
难度等级 | 中间的 |
Root 权限 | 不 |
要求 | OpenSSH 客户端+服务器 |
预计阅读时间 | 3 分钟 |
- 使用现有的 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.example.com
Port 2222
ControlPath ~/.ssh/ssh-mux-%r@%h:%p
ControlMaster auto
ControlPersist yes
保存并关闭文件。其中,
- Host *或Host server1:开始 ssh 配置。
- HostName server1.example.com:真实主机名
- 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 分钟后自动终止。如果设置为yes,则主连接将无限期地保持在后台(直到被终止或关闭)
我如何使用它?
只需开始运行 ssh 命令:
$ ssh user@host
$ ssh root@v.server1
$ ssh example@192.168.1.219
如何验证多路复用器正在工作?
使用以下任一命令来验证多路复用器是否正常工作:
$ lsof -U | grep master
或
$ ssh -O check root@v.server1
示例输出:
我可以告诉主连接不要接受进一步的多路复用请求吗?
是的,使用以下语法:
传递 exit 选项而不是 stop 来取消所有现有连接,包括主连接:
$ ssh -O stop host
$ ssh -O stop root@v.server1
$ ssh -O exit host
$ ssh -O exit root@v.server1
如何进行端口转发?
使用 -L 将本地主机上的端口 3128 转发到远程主机上的端口 3128 的语法如下:
ssh -O forward -L 3128:localhost:3128 v.server1
您还可以指定用于连接共享的控制套接字的位置:
ssh -O forward -L 3128:localhost:3128 -S $HOME/.ssh/master-root@v.server1:22 v.server1
SSH 多路复用的主要优势在于,它消除了创建新 TCP 连接的开销。使用多路复用可以显著加快反复打开新连接的 SSH 客户端活动的速度。有关更多信息,请参阅 ssh_config 手册页。
本篇是Linux/Unix OpenSSH 教程系列中的第 21 篇(共23篇) 。继续阅读本系列的其余部分:
- 20 个 OpenSSH 服务器最佳安全实践
- 如何在 Linux / Unix 系统上设置 SSH 密钥
- Linux / Unix 用户的 OpenSSH 配置文件示例
- 审计 Linux/Unix 上的 SSH 服务器和客户端配置
- 如何在 FreeBSD 上安装和升级 OpenSSH 服务器
- Ubuntu Linux 安装 OpenSSH 服务器
- 在 Alpine Linux 上安装 OpenSSH 服务器(包括 Docker)
- Debian Linux 安装 OpenSSH SSHD 服务器
- 配置 OpenSSH 以监听 IPv6 地址
- OpenSSH 服务器连接在几分钟不活动后断开
- 在 OpenSSH 身份验证之前显示横幅/消息
- 强制 OpenSSH(sshd)仅监听选定的多个 IP 地址
- OpenSSH 使用 ssh-keygen 命令更改密码
- 重复使用 SSH 连接以通过多路复用加速远程登录过程
- 重新启动 SSHD 服务器之前检查语法错误
- 更改 Linux 或 Unix 服务器上的 ssh 端口
- OpenSSH 拒绝或限制用户和组的访问
- Linux OpenSSH 服务器拒绝 root 用户访问/登录
- 在 Linux 上禁用 ssh 密码登录以提高安全性
- SSH ProxyCommand 示例:通过一台主机到达服务器
- OpenSSH 多路复用器可加速 OpenSSH 连接
- 在远程 Linux / UNIX 服务器中安装 / 附加 SSH 密钥 Authorized_keys
- 使用 ssh-copy-id 与监听不同端口的 OpenSSH 服务器配合使用