CentOS 5 SSH服务器退出会话后无法立即重连问题求助
CentOS 5 SSH 退出后立即重连超时的排查方向
1. 检查TCP TIME_WAIT连接堆积情况
- 执行
netstat -antp | grep TIME_WAIT | wc -l查看TIME_WAIT状态的连接数量,若数值过大(比如上万),说明系统未及时回收这类连接 - 临时调整TCP参数:执行
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse和echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle开启TIME_WAIT连接的复用与回收,之后测试重连是否正常 - 永久生效:编辑
/etc/sysctl.conf,添加或修改以下配置:
执行net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_fin_timeout = 30sysctl -p加载配置
2. 检查SSH服务的连接限制配置
- 查看
/etc/ssh/sshd_config中的关键参数:- 检查
MaxStartups:该参数控制未认证连接的最大数量,默认值为10:30:100,若设置过低可能导致短时间重连被拒绝 - 检查
MaxSessions:控制每个TCP连接的最大会话数,确保数值合理
- 检查
- 修改后重启SSH服务:
service sshd restart再进行测试
3. 排查系统资源瓶颈
- 检查CPU、内存使用情况:执行
top或vmstat,确认是否有进程占用过高资源,导致SSH服务无法及时响应新连接 - 检查磁盘IO:执行
iostat,若磁盘读写负载过高,可能影响SSH服务的进程调度
4. 检查系统的TCP端口监听状态
- 执行
netstat -antp | grep sshd,确认sshd是否持续监听22端口,是否出现监听端口丢失的情况 - 若系统支持
ss命令,执行ss -tulpn | grep sshd查看更详细的端口监听信息
5. 查看SSH服务日志
- 查看
/var/log/secure日志,搜索退出和重连时段的记录,排查是否有认证失败、资源不足等错误提示 - 执行
tail -f /var/log/secure实时查看日志,同时在客户端尝试重连,观察日志输出
6. 再次确认IPtables规则(补充排查)
- 执行
iptables -L -n,查看是否存在针对SSH端口的超时或连接限制规则,比如--tcp-flags SYN,RST SYN的限速规则 - 临时清空规则测试:
iptables -F,之后尝试重连,确认是否由规则导致问题
内容的提问来源于stack exchange,提问作者Richie
相关产品推荐
相关产品推荐

