AWS EC2绑定Elastic IP后SSH连接成功后随机超时求助
解决AWS EC2 SSH连接随机超时问题
1. 配置TCP Keepalive参数
SSH连接超时大多是空闲连接被中间网络设备(如NAT网关)主动断开,通过配置Keepalive可维持连接:
- 客户端侧:
临时连接时添加参数:
永久生效可修改ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 ec2-user@<你的EIP>~/.ssh/config:Host <你的EIP> ServerAliveInterval 60 ServerAliveCountMax 3 - 服务器侧:
修改系统TCP参数,编辑/etc/sysctl.conf添加:
执行net.ipv4.tcp_keepalive_time = 60 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_keepalive_probes = 5sysctl -p使配置生效。
2. 检查网络ACL与NAT网关设置
- AWS NAT网关默认空闲连接超时为350秒(约6分钟),确保Keepalive间隔小于这个值,避免被主动断开。
- 检查实例所在子网的网络ACL,确认没有设置过短的空闲连接超时规则,确保SSH等必要TCP端口的出入站流量无限制。
3. 排查实例内部防火墙规则
即使安全组已放开,实例内部的iptables或firewalld可能存在空闲连接超时规则:
- 查看iptables超时规则:
iptables -L -n -v | grep -i timeout - 若存在
--timeout相关规则,调整超时时间(建议300秒以上)或直接删除该规则。
4. 禁用系统休眠/电源节能设置
部分Linux发行版的自动休眠或电源节能会导致网络接口中断:
- 查看休眠相关服务状态:
systemctl list-unit-files | grep sleep - 禁用休眠服务:
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
5. 检查系统日志与实例状态
- 登录EC2控制台,查看实例的系统日志和状态检查报告,排查内核报错、网络驱动故障或硬件异常。
- 在实例内部查看相关日志:
定位连接断开的具体错误信息。dmesg | grep -i error cat /var/log/messages | grep -i ssh
6. 测试实例硬件/底层网络
若以上步骤无效,可能是实例硬件或底层网络问题:
- 停止实例(保留Elastic IP),更换实例类型后重启测试。
- 创建新EC2实例,挂载原实例根卷,验证是否为原系统配置问题。
内容的提问来源于stack exchange,提问作者בר ידגר
相关产品推荐
相关产品推荐

