SSH连接超时断开应修改服务端/etc/ssh/sshd_config而非客户端配置,关键参数为ClientAliveInterval 60(每60秒发心跳)和ClientAliveCountMax 3(连续3次无响应断连),修改后须执行systemctl restart sshd生效。

ssh 连接超时断开:改 sshd_config 而不是客户端配置
很多人误以为改 /etc/ssh/ssh_config(客户端配置)能延长服务器端连接存活时间,其实不起作用。真正控制“空闲多久断开”的是服务端配置 /etc/ssh/sshd_config。
-
ClientAliveInterval必须设为非零值(如60),表示服务器每 60 秒发一次心跳包 -
ClientAliveCountMax默认是3,意思是连续 3 次没收到响应就断连;保持默认即可,不必调高 - 修改后必须执行
systemctl restart sshd,systemctl reload sshd不生效 - 注意别和
TMOUT环境变量混淆:TMOUT=0是 shell 层级超时,只影响本地终端或登录后的交互会话,不影响 SSH 连接本身
网络服务启动失败导致“Connection timed out”:先确认 network.service 状态
当你看到 ssh: connect to host xxx port 22: Connection timed out,但本机 ping 不通任何地址,大概率不是 SSH 配置问题,而是网络服务根本没起来。
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
- 运行
systemctl status network.service,如果显示inactive (dead)或failed,说明网卡没激活 - 常见原因是网卡配置文件里
ONBOOT=no,需改为yes,路径通常是/etc/sysconfig/network-scripts/ifcfg-ens33(网卡名以ip a输出为准) - CentOS 7 默认同时启用
NetworkManager和传统network.service,二者冲突会导致启动失败;建议停用前者:systemctl stop NetworkManager && systemctl disable NetworkManager - 改完配置后,用
systemctl restart network,再检查ip a是否有有效 IP
防火墙或 SELinux 干扰 SSH 连接:别只关防火墙,要放行端口
即使网络通、sshd 在运行,Connection timed out 仍可能来自中间拦截——尤其是新装系统默认开启 firewalld。
- 不要直接
systemctl stop firewalld,应精准放行:firewall-cmd --permanent --add-port=22/tcp && firewall-cmd --reload - SELinux 一般不影响 SSH 连通性,但如果启用了
sshd的非标准端口(比如改成了18222),必须加对应端口上下文:semanage port -a -t ssh_port_t -p tcp 18222 - 用
ss -tlnp | grep :22确认sshd真正在监听,且监听的是0.0.0.0:22而非127.0.0.1:22(后者只允许本地连)
虚拟机 NAT 模式下超时:关键在 VMnet8 的 DHCP 和网关一致性
VMware 中 CentOS 7 用 NAT 上网却反复超时,往往不是系统配置错,而是宿主机虚拟网络和客户机 IP 设置不匹配。
- 在 VMware “虚拟网络编辑器”中记下 VMnet8 的子网 IP 段(如
192.168.137.0)、DHCP 起止地址(如192.168.137.128–192.168.137.254)和网关(如192.168.137.2) - 客户机配置文件中
IPADDR必须落在 DHCP 范围内,GATEWAY必须与 VMnet8 网关一致,NETMASK不能写错(常见错写成255.255.255.0但实际子网掩码是255.255.255.255) - 宿主机上若禁用了 VMware NAT Service 或 DHCP Service,虚拟机即使配对也拿不到路由,需在 Windows 服务里手动启用
ONBOOT=yes 改了,但忘了重启 network.service;或者改了 sshd_config 却重启了错误的服务(比如 systemctl restart ssh,而正确命令是 systemctl restart sshd)。

















