返回介绍

SSH 长连接

发布于 2025-03-08 17:41:53 字数 1533 浏览 0 评论 0 收藏 0

SSH 长连接

我们知道怎样可以在连接 ssh 远程服务器的时候不输入密码,但是每次连接的时候都建立一个新的连接未免过于啰嗦,尤其是经常时不时就登上服务器的时候,每次连接都耗费了我们的耐心。

这个时候,如果 SSH 像 TCP 长连接那样就好了,一直建立着,不会断开。

你别说,还真有。

不过名字就不叫 SSH 长连接了,英文名叫 "SSH’s ControlMaster".

也就是一个小管家,管理着你的那些连接. 比如,你登陆了服务器 A, 当你退出服务器 A 的时候,小管家并不会断开连接,尽管你看到确实是已经与服务器断开了. 当你再次登陆服务器 A 的时候,你就回发现速度明显快了许多,而且第一次登陆时欢迎的 banner 也不见了,这是为什么? 就是因为小管家一直在连接着服务器,在你看来,你已经与服务器断开连接了,但是服务器却认为你一直在线. 而且你用 ss -ant 查看的时候也会发现连接是建立着的。

那怎么做呢?

~/.ssh/config 文件里,添加如下几句话:

Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p

解释一下都是什么意思:

  • Host * 对于所有主机都让小管家托管
  • ControlMaster auto 开启小管家的自动控制
  • ControlPath 托管的凭据在哪儿(一切皆文件)

当然,你也可以指定仅适用于某些主机:

HOST 192.168.0.*
HOST *.com

如此之类的。

然后,贴一下我的配置文件:

TCPKeepAlive=yes
ServerAliveInterval=15
ServerAliveCountMax=6
Compression=yes
ControlMaster auto
ControlPath /tmp/%r@%h:%p
ControlPersist yes

刚才更新 github 的时候建立了一个连接:

➤ l git@github.com\:22 
srw------- 1 mr mr 0  1 月 19 18:12 git@github.com:22=
➤

我看可以看到,这是一个 socket 文件,并且:

➤ ss -ant4 | grep -E ':22'
ESTAB      0      0      10.177.46.227:40182              192.30.252.131:22                 
➤

也是可以看到这个已经建立的连接的. 节省了以后再次建立连接的时间. 真的很快 :)

本书简介:

  • Linux 进阶技巧
  • 巧妙的命令组合
  • Bash 某些技巧
  • 一共一百零一个(包括充数的)
  • 最后有个奖励章(额外技巧)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文