

使 SSH 保持长时间连接
source link: https://blog.ichr.me/post/keep-ssh-connection-alive-for-long/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

众所周知,为了保护服务器及其拥有者利益,在使用 SSH 连接远程服务器的时候,如果终端(在我认为比较短的)一段时间内没有行为,那么 SSH 就会断开连接,并返回:
packet_write_wait: Connection to xxx.xxx.xxx.xxx port xxxx: Broken pipe
不仅如此,在你反应过来想再控制终端的时候,还会发生一点卡顿才断开,这着实有点恼人。
这里记录下 保持一定时间连接 的方法。
测试环境:
VPS: Ubuntu 18.04
本地: macOS 10.14
服务端实现
(可能需要 root 权限,建议直接在 root 用户下进行)
使用 vi/vim 打开 /etc/ssh/sshd_config
文件,找到如下两行:
ClientAliveInterval
ClientAliveCountMax
解释一下:
第一个 ClientAlivaTnterval
字面意思是 客户端存活间隔 ,比如设置 ClientAliveInterval 60
指的是:服务端每隔 60 秒发送一次空包 (null packet) 到客户端,监测是否有回应,并保持连接。
第二个 ClientAliveCountMax
指的是 客户端在以 ClientAliveInterval 的间隔请求了多少次才会断开连接,比如设置 ClientAliveCountMax 10
,结合上面的设置,意思是:如果服务端每 60 秒发送一个包给客户端,发送 10 次以后(也就是 600 秒)仍没有回应,则服务端主动断开连接。
设置好后执行命令重载 SSH 配置:
systemctl restart sshd
这样就实现了全局控制,任何连接这台服务器的客户端都会保持着这样的一个「心跳频率」,大家可以根据自己习惯设定,注意间隔不要太长。
客户端实现
我们也可以让本地客户端发送请求到服务端保持连接。
在本地 SSH 文件夹 (.ssh) 内,如果你已经配置了 SSH 密匙连接,只需要在对应 Host 追加:
ServerAliveInterval 60
ServerAliveCountMax 10
与上一种方法类似,这不过是客户端(本地终端)给服务端发送请求并保持连接。
如果你还没设置 SSH 连接,就在 SSH 文件夹 (.ssh) 下新建一个 config
文件,然后参考以下配置:
Host {shortcut of your server}
HostName {ip of your server}
User {the correspond user on your server that you wanna connect (root etc.)}
ServerAliveInterval 60
ServerAliveCountMax 10
然后使用 ssh {shortcut} .../ssh {ip} ...
即可连接,并发送保持请求。
以上记录的两种方法效果类似,只不过前者是服务端向客户端发送请求,后者是客户端向服务端发送请求。
至于选择,如果 VPS 仅仅是个人使用的话,可以考虑前者,这样无论在哪个客户端上都是最符合你的习惯。如果是多人合用,那就建议采用后者,这样不会对他人造成影响。
Recommend
-
23
我们经常通过 ssh/scp 免密登录的方式来自动化的批量执行一些操作, 不过在实际的使用中可能经常碰到下面几种中断自动连接的问题. 引起中断的问题 目前主要由以下几方面问题会引起连接中断: Hos...
-
14
解决ssh连接长时间不操作断开连接的问题(client_loop/ send disconnect/ Broken pipe)技术之前,先读诗书: 通过ssh连上服务器后,一段时间不操作,就会自动中断,并报出以下信息:
-
16
Mac让ssh通过代理来连接服务器 | 南瓜慢说官方网站技术之前,先读诗书: 如果我们在家办公,就需要通过代理来连接公司内网的服务器。当然,还有其它场景也可能是需要通过代理来ssh连接的。
-
7
第一节,小编和大家一起使用 vmware 虚拟机,在常用的 windows 电脑中搭建了 ubuntu linux 环境。
-
8
使用putty等ssh客户端工具连接wsl 正常情况下我们会使用windows terminal 来连接wsl或者我们直接使用ubuntu应用启动图标来连接,那么有没有其它的方式来连接呢,毕竟是linux系统,它是支持ssh连接的。 答案是肯定的,我们可以通过设置ssh...
-
9
Ubuntu18.04配置ssh服务以实现远程连接_、Lu的博客-CSDN博客 Ubuntu18.04配置ssh服务以实现远程连接 ...
-
10
首先我们要在客户端(本机)生成密钥对 这里的密钥对是 Public key,具体请参考 公开密钥加密
-
6
使用ssh隧道代理并连接任意服务 2019-09-20 14:50:05 code 约 210 字 预计阅读 1 分钟 24...
-
5
如何在断开连接后保持远程 SSH 会话运行-51CTO.COM 如何在断开连接后保持远程 SSH 会话运行 作者:雪竹频道 2022-04-10 22:50:20 在本文中,讨论了 SSH 会话断开连接的可能原因,并描述了在断开...
-
6
有没有简单的方法保持云桌面持续连接 - V2EX V2EX › 全球工单系统
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK