CentOS SSH会话保持方法
CentOS SSH会话保持方法
1. 配置SSH服务端心跳机制(推荐)
通过调整SSH服务端配置,定期发送心跳包以维持连接。编辑服务端配置文件/etc/ssh/sshd_config
,添加或修改以下参数:
ClientAliveInterval 60
:服务器每60秒向客户端发送一次心跳请求;ClientAliveCountMax 3
:若客户端连续3次未响应心跳,服务器自动断开连接(总超时时间为60×3=180秒)。
保存文件后,重启SSH服务使配置生效:
systemctl restart sshd # CentOS 7/8/9
# 或 service sshd restart # CentOS 6
此方法需服务器权限,适合长期稳定保持会话。
2. 配置SSH客户端心跳(临时/无需服务器修改)
若无法修改服务器配置,可通过客户端设置主动发送心跳。编辑客户端配置文件~/.ssh/config
(或创建该文件),添加以下内容:
Host * # 适用于所有主机
ServerAliveInterval 60 # 客户端每60秒向服务器发送一次心跳
ServerAliveCountMax 3 # 连续3次无响应后断开(可选,建议与服务器端一致)
或临时通过命令行指定(仅当前连接有效):
ssh -o "ServerAliveInterval 60" user@hostname
此方法快速便捷,适合临时会话或无服务器权限的场景。
3. 使用终端复用工具(screen/tmux)
终端复用工具可在断开连接后保留会话状态,重新连接后恢复工作。
-
screen:
安装:sudo yum install screen -y
;
启动新会话:screen -S mysession
(mysession
为自定义会话名);
分离会话(保持后台运行):按Ctrl+A
,再按D
;
重新连接:screen -r mysession
。 -
tmux:
安装:sudo yum install tmux -y
;
启动新会话:tmux new -s mysession
;
分离会话:按Ctrl+B
,再按D
;
重新连接:tmux attach -t mysession
。
两者均支持多窗口、会话共享,适合长时间运行的任务(如脚本执行、开发调试)。
4. 使用autossh自动重连
autossh是一款自动重连SSH的工具,适合网络不稳定的环境。安装:sudo yum install autossh -y
;
基本用法:
autossh -M 0 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" user@hostname
参数说明:
-M 0
:禁用内置心跳(依赖SSH自身心跳);-o "ServerAliveInterval 60"
:设置心跳间隔;-o "ServerAliveCountMax 3"
:设置心跳失败阈值。
autossh会在连接断开后自动重新建立SSH会话,确保连接持续性。
5. 防火墙设置(确保连通性)
若服务器启用了防火墙(如firewalld),需确保SSH端口(默认22)开放,避免因防火墙拦截导致连接中断。执行以下命令:
firewall-cmd --permanent --add-service=ssh # 开放SSH服务
firewall-cmd --reload # 重新加载防火墙规则
若使用iptables,需添加对应规则允许SSH流量。
以上方法可根据实际需求组合使用(如“服务端心跳+autossh”提升稳定性、“tmux+终端复用”保留会话状态),有效解决CentOS SSH会话超时断开的问题。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS SSH会话保持方法
本文地址: https://pptw.com/jishu/717337.html