error: Received disconnect from xxx port xxx: User session has timed out idling after 600000 ms.

在巡检Linux系统时,检查日志时候发现如下报错:

error: Received disconnect from x.x.x.x port 47528:2: User session has timed out idling after 600000 ms.

先决条件

    • Red Hat Enterprise Linux release 8.10 (Ootpa)
    • 齐治堡垒机

诊断步骤

在使用SSH(Secure Shell)进行远程连接时,常常会遇到会话因长时间空闲而自动断开的情况。首先我们先和使用者者联系,确认是否存在空间超时的情况。

1.检查网络情况

使用ping命令测试客户端与服务器之间网络的连通性,例如:

ping x.x.x.x

2.检查服务器资源使用情况

在服务器端使用top、htop等命令查看系统西苑,判断是否因资源不足导致ssh异常。

3.检查防火墙

在服务端查看防火墙状态,以 firewalld 为例:

[root@yunweixia.com ~]# firewall-cmd --list-all

检查防火墙是否启动,如果启动状态则可以看到规则。

解决方案

经过如上检查,没有发现其他原因导致SSH连接异常的情况。那么需要调整ssh配置解决该问题。

客户端方面

(1)修改SSH客户端配置

通过修改客户端的SSH配置文件,让客户端定期向服务端发送心跳包,保持连接活跃。 编辑配置文件:打开用户主目录下的 .ssh/config 文件,如果该文件不存在则创建它,在文件中添加以下内容。

[root@yunweixia.com ~]# vi ~/.ssh/config
Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

说明:

  • ServerAliveInterval 60 表示客户端每隔 60 秒向服务器发送一次心跳包;
  • ServerAliveCountMax 3 表示如果服务器连续 3 次没有响应心跳包,客户端才会断开连接。

(2)加载配置

保存并重新加载配置:保存文件后,后续新建立的SSH连接就会使用这个配置。

(3)使用命令行参数临时设置(可选)

在使用ssh命令连接服务器时,可以直接添加参数来设置心跳包的发送间隔:

ssh -o ServerAliveInterval=60 user@x.x.x.x

这样本次连接就会每隔 60 秒向服务器发送一次心跳包。

服务端方面

(1)修改SSH服务端配置

服务端的SSH配置文件/etc/ssh/sshd_config中可以设置允许客户端的空闲时间。 编辑配置文件,添加如下内容:

[root@yunweixia.com ~]# vi /etc/ssh/sshd_config
ClientAliveInterval 60
ClientAliveCountMax 3

说明:

  • ClientAliveInterval 60 表示服务端每隔60秒向客户端发送一次心跳包,检测客户端是否还处于活动状态;
  • ClientAliveCountMax 3 表示如果客户端连续3次没有响应,服务端就会断开连接。

(2)保存并重启SSH服务

[root@yunweixia.com ~]# systemctl restart sshd

总结扩展

通过以上客户端和服务端的设置,可以有效解决SSH会话因空闲超时断开的问题。同时,在实际应用中,还可以根据具体需求调整心跳包的发送间隔和最大无响应次数。

技术评审

  • 评审专家:保哥 | 某保险公司运维开发工程师
  • 验证结论:齐治堡垒机400客服答复堡垒机端无法修改ssh连接参数,此方案仅做参考。

修订记录

  • 2025-03-04 v1.0 初版发布

原创文章,作者:运维侠,如若转载,请注明出处:https://www.yunweixia.com/solutions/session-timeout-idle-disconnect-error-solution-guide.html

(0)
运维侠的头像运维侠共建用户
上一篇 2025年8月8日 18:11
下一篇 2025年8月10日 18:11

相关推荐

发表回复

登录后才能评论