如何用CentOS解决SSH连接超时
导读:CentOS SSH连接超时的定位与解决 一、先判断是连接不上还是会话被断开 出现“Connection timed out”多见于网络不通、端口未放行或服务未监听,属于“连不上”。 能登录但空闲一段时间自动退出,属于“会话超时”。 辅助...
CentOS SSH连接超时的定位与解决
一、先判断是连接不上还是会话被断开
- 出现“Connection timed out”多见于网络不通、端口未放行或服务未监听,属于“连不上”。
- 能登录但空闲一段时间自动退出,属于“会话超时”。
- 辅助判断:
- 查看端口可达性:
nc -vz < 服务器IP> 22或telnet < IP> 22 - 抓包定位:
tcpdump -ni any port 22(服务器端) - 服务端监听:
ss -lntp | grep :22或netstat -lntp | grep :22 - 客户端调试:
ssh -vvv user@host
- 查看端口可达性:
二、连接不上的排查与修复(Connection timed out)
- 确认服务与端口监听
- 安装/启动/自启:
yum install -y openssh-server;systemctl start sshd;systemctl enable sshd - 监听检查:
ss -lntp | grep :22,若为空说明未监听或被改了端口。
- 安装/启动/自启:
- 核对网络与路由
- 本机与对端互 ping;查看地址、网关、掩码:
ip addr、route -n;必要时检查云安全组/物理防火墙。
- 本机与对端互 ping;查看地址、网关、掩码:
- 防火墙放行
- firewalld:
firewall-cmd --list-ports;firewall-cmd --zone=public --add-port=22/tcp --permanent;firewall-cmd --reload - 若用 iptables:
iptables -L -n | grep :22,必要时放行并重载规则。
- firewalld:
- 端口与监听地址
- 检查
/etc/ssh/sshd_config中的Port 22与ListenAddress(若仅监听 127.0.0.1 或错误地址,外部将连接超时)。
- 检查
- SELinux 与系统策略
- 临时排查:
setenforce 0测试是否被 SELinux 拦截(测试后请恢复为setenforce 1并按需配置策略)。
- 临时排查:
- 外部拦截
- 确认机房/云厂商安全组、边界防火墙未阻断 TCP/22。
以上步骤覆盖了“服务未起、网络不通、端口未放行、策略限制”等主因,逐条核对通常可恢复连接。
- 确认机房/云厂商安全组、边界防火墙未阻断 TCP/22。
三、会话空闲自动断开的优化(保持长连接)
- 服务端保持心跳(推荐)
- 编辑
/etc/ssh/sshd_config:ClientAliveInterval 300(每 300 秒发一次保活)ClientAliveCountMax 3(最多 3 次无响应后断开,约等于 900 秒)
- 生效:
systemctl restart sshd
- 编辑
- 客户端保持心跳(无法改服务端时)
- 全局:
/etc/ssh/ssh_config中加入ServerAliveInterval 300 - 单次连接:
ssh -o ServerAliveInterval=60 user@host - 常见终端:
- PuTTY:Connection → Seconds between keepalives(如 60)
- SecureCRT:会话选项里设置保活间隔
- 全局:
- Shell 层超时变量
- Bash:
echo "TMOUT=1800" > > /etc/profile & & source /etc/profile(单位秒,0 为不超时) - Csh/Tcsh:
set autologout=30(在相应配置文件中设置)
上述参数含义与组合方式可稳定避免“空闲被踢”,同时兼顾安全与可用性。
- Bash:
四、连接很慢但不是超时的优化(可选)
- 关闭 SSH 反向 DNS 解析:
/etc/ssh/sshd_config→UseDNS no - 关闭 GSSAPI 认证:
/etc/ssh/sshd_config→GSSAPIAuthentication no - 调整解析顺序:
/etc/nsswitch.conf→hosts: files dns(如无需 DNS 可仅保留files) - 客户端同理可关闭 GSSAPI:
/etc/ssh/ssh_config→GSSAPIAuthentication no
这些设置能显著减少登录握手阶段的等待时间。
五、快速排查清单与常用命令
- 快速清单
- 端口可达:
nc -vz < IP> 22 - 监听状态:
ss -lntp | grep :22 - 服务状态:
systemctl status sshd - 防火墙:
- firewalld:
firewall-cmd --list-ports;firewall-cmd --add-port=22/tcp --permanent & & firewall-cmd --reload - iptables:
iptables -L -n | grep :22
- firewalld:
- 抓包定位:
tcpdump -ni any port 22 - SELinux:
getenforce/setenforce 0(仅测试) - 客户端调试:
ssh -vvv user@host
- 端口可达:
- 常用命令汇总
systemctl start|enable|restart sshdss -lntp | grep :22firewall-cmd --list-ports;firewall-cmd --add-port=22/tcp --permanent & & firewall-cmd --reloadnc -vz < IP> 22;tcpdump -ni any port 22;ssh -vvv user@host
按以上顺序执行,通常可在数分钟内定位并修复 SSH 超时问题。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何用CentOS解决SSH连接超时
本文地址: https://pptw.com/jishu/788117.html
