You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 = 5
    
    执行sysctl -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,提问作者בר ידגר

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 20:57:51