保持SSH长连接不断掉

问题背景

无论是使用xshell这样的ssh软件,还是通过Terminal终端,ssh远程连接服务器的时候,长时间不操作,就会自动断开连接,就需要重新进行连接

解决方法

方法一:修改服务器端ssh配置

首先登陆到远程服务器上,打开/etc/ssh/sshd_config配置文件,找到以下三条配置信息,并修改

# 修改前
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3

# 修改后
TCPKeepAlive yes
ClientAliveInterval 10
ClientAliveCountMax 5

TCPKeepAlive yes 表示tcp链接保持活跃
ClientAliveInterval 10表示每10秒向客户端发送一次保持连接的信号
ClientAliveCountMax 5表示客户端如果5次没有响应,就断开连接。

修改完成后重新启动ssh服务,执行以下命令

sudo systemctl restart sshd

方法二:修改客户端(如果是linux的话)

如果使用ssh链接的客户端也是linux,那么可以配置客户端上的ssh配置文件/etc/ssh/ssh_config,同样修改成以下内容

# 修改前
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3

# 修改后
TCPKeepAlive yes
ClientAliveInterval 10
ClientAliveCountMax 5

修改完成后重新启动ssh服务,执行以下命令

sudo systemctl restart sshd

方法三:使用ssh命令参数

在使用ssh命令时,使用ServerAliveInterval参数,设置心跳时间,比如这里设置间隔60秒发送一次心跳包

ssh -o ServerAliveInterval=60 root@IPAddress

但是该命令,只有在本次登录有效,下次进行ssh远程登录保持不断开,依旧需要带上该参数信息

### Ubuntu SSH 会话保持配置 为了确保SSH会话会因闲置而被中断,在Ubuntu服务器上的解决方案涉及调整SSH服务器和客户端的设置。 #### 修改SSH服务器配置 SSH服务器的配置文件位于`/etc/ssh/sshd_config`。此文件中的参数控制着服务器的行为,包括处理空闲连接的方式[^1]。对于希望阻止由于长时间无活动而导致的自动断开情况,应当考虑添加或修改如下选项: - `ClientAliveInterval`: 定义服务器向客户端发送存活检测消息的时间间隔(秒),建议设为较低数值比如60。 - `ClientAliveCountMax`: 设置在没有收到回应前尝试发送多少次存活探测,默认值通常已足够;可适当增加以适应更长周期的需求。 完成上述更改之后,记得保存并重启SSH服务使新设定生效: ```bash sudo systemctl restart sshd ``` #### 调整SSH客户端配置 除了优化服务器端外,还可以通过编辑本地机器上的全局SSH配置文件来增强稳定性。这一般指的是个人电脑而非目标Linux主机本身。路径通常是`/etc/ssh/ssh_config`或者用户目录下的`.ssh/config`[^4]。在此处加入以下指令有助于维持稳定连接: - `ServerAliveInterval`: 类似于前面提到过的`ClientAliveInterval`,过这次是从客户机角度出发定期询问对方状态; - `TCPKeepAlive yes`: 开启底层网络层的心跳包机制进一步保障链路质量。 同样地,这些改动也需要相应工具如vim/nano等文本编辑软件来进行操作,并且需要重新启动任何服务因为它们仅影响未来建立的新连接。 以上措施能够有效减少非预期性的SSH会话丢失现象发生频率,提高远程管理效率以及用户体验感。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值