SSH 连接复用

通过 ControlMaster 复用已有的 SSH 连接,加速后续连接并减少认证次数

语法

Host *
  ControlMaster auto
  ControlPath ~/.ssh/sockets/%r@%h-%p
  ControlPersist 600

参数

参数说明示例级别
ControlMaster 控制连接复用模式 ControlMaster auto 常用
ControlPath 控制 socket 文件路径 ControlPath ~/.ssh/sockets/%r@%h-%p 常用
ControlPersist 主连接空闲保持时间(秒) ControlPersist 600 常用
-O check 检查主连接是否存活 ssh -O check user@host 进阶
-O exit 关闭主连接 ssh -O exit user@host 进阶
-S 指定 socket 文件路径 ssh -S /tmp/ssh-socket user@host 进阶

示例

全局配置连接复用

# ~/.ssh/config
Host *
  ControlMaster auto
  ControlPath ~/.ssh/sockets/%r@%h-%p
  ControlPersist 600
所有连接自动复用,空闲 10 分钟后关闭

创建 socket 目录

mkdir -p ~/.ssh/sockets
chmod 700 ~/.ssh/sockets
首次配置需要创建 socket 存放目录

检查复用连接状态

ssh -O check user@server
输出 Master running 表示复用连接正常

手动关闭复用连接

ssh -O exit user@server
关闭主连接,后续连接将重新建立

常见错误

ControlPath too long socket 路径过长,使用更短的 ControlPath,如 ~/.ssh/s/%r@%h-%p
Control socket connect: Connection refused 旧的 socket 文件残留,删除对应的 socket 文件:rm ~/.ssh/sockets/user@host-22

技巧

相关命令