AWS EC2 SSH连接随机断开且重连超时,求解决方案
AWS EC2 SSH随机超时断开的解决思路
网络链路排查
- 本地网络测试:持续运行
ping ec2-?-?-?-?.compute-1.amazonaws.com和traceroute ec2-?-?-?-?.compute-1.amazonaws.com(Windows用tracert),观察是否有丢包、延迟突增或路由节点异常,排除本地ISP或跨网链路波动问题。 - AWS区域状态确认:查看对应AWS区域的公开服务健康状态,排查是否存在区域级网络故障或维护。
- 安全组与NACL验证:
- 确认安全组入站规则允许22端口从你的公网IP(可临时用
0.0.0.0/0测试,但测试后需改回)访问。 - 检查子网NACL的入站、出站规则,确保都放行22端口的TCP流量,避免规则被误配置导致阻断。
- 确认安全组入站规则允许22端口从你的公网IP(可临时用
EC2实例自身排查
- 日志与资源监控:
- 通过AWS控制台查看实例系统日志,搜索
sshd相关记录,排查是否有服务崩溃、认证失败或资源耗尽的日志。 - 查看CloudWatch的CPU、内存、磁盘IO指标,定位断开时段是否存在资源占用过高(比如内存耗尽触发OOM杀死sshd进程)。
- 通过AWS控制台查看实例系统日志,搜索
- 优化SSH连接配置:
- 本地
~/.ssh/config(Windows路径:C:\Users\<你的用户名>\.ssh\config)添加以下配置,防止空闲超时:Host ec2-*-*-*-*.compute-1.amazonaws.com ServerAliveInterval 30 ServerAliveCountMax 10 TCPKeepAlive yes - 登录实例修改
/etc/ssh/sshd_config,确保ClientAliveInterval 60、ClientAliveCountMax 3配置存在,执行sudo systemctl restart sshd生效。
- 本地
- 网络接口重置:尝试给实例分配新的弹性IP,或通过AWS控制台操作“重启网络接口”,排查弹性IP或网卡的偶发故障。
其他排查方向
- 原生SSH测试:直接用系统原生
ssh命令连接实例,若原生命令正常,说明问题出在VSCode Remote-SSH扩展,可尝试更新扩展、重置扩展配置或重装扩展。 - DNS解析验证:多次执行
nslookup ec2-?-?-?-?.compute-1.amazonaws.com,若解析IP不稳定,可在本地hosts文件绑定实例弹性IP与域名。 - 子网路由表检查:确认实例所在子网的路由表已关联互联网网关(IGW),且IGW状态正常,路由规则未被修改。
内容的提问来源于stack exchange,提问作者Terry McCann
相关产品推荐
相关产品推荐

