Ubuntu EC2实例SSH连接超时问题排查求助
我太懂这种SSH连不上的糟心感了,尤其是已经排查了常规项之后还卡壳。咱们再一步步深挖可能的盲区,把问题解决掉:
检查子网的网络ACL设置
安全组是实例级的防火墙,但子网的网络ACL是更上层的子网级规则,很容易被忽略。你得确认实例所在子网的网络ACL:- 入站规则要允许TCP 22端口从你的公网IP(或者先临时用
0.0.0.0/0测试)进入 - 出站规则要允许所有TCP响应端口(1024-65535),因为SSH是双向通信,出站被挡也会导致超时
- 入站规则要允许TCP 22端口从你的公网IP(或者先临时用
重新确认Elastic IP的关联有效性
有时候Elastic IP看起来绑定成功,但实际关联可能有异常。去EC2控制台找到实例的「弹性IP」标签,确认IP确实和实例绑定,且实例的公网IP显示的就是这个Elastic IP。可以先解绑再重新绑定一次,确保关联彻底生效。检查Ubuntu本地防火墙(ufw)
就算安全组放通了,Ubuntu系统自带的ufw防火墙也可能把22端口挡住。你可以用EC2控制台的「实例连接(EC2 Instance Connect)」直接登录实例,然后跑命令排查:sudo ufw status如果ufw是活跃状态,先确认是否允许SSH:
sudo ufw allow ssh或者临时关闭ufw测试:
sudo ufw disable之后再用Putty试连接,看是否恢复。
验证子网路由表的公网访问配置
检查实例所在子网的路由表,必须有一条指向Internet Gateway(IGW)的默认路由(0.0.0.0/0 -> IGW)。如果没有这条路由,实例根本没法和公网通信,自然接不到你的SSH请求。排查本地到实例的网络连通性
在Windows命令行里ping一下你的Elastic IP:ping <你的Elastic IP>如果ping不通,说明网络层面确实有阻断;如果ping通但SSH连不上,再回到防火墙和实例配置排查。另外也可以换用WinSCP直接用IP连接,排除Putty自身的配置缓存问题。
检查实例的系统状态
去EC2控制台看实例的「状态检查」结果,确保「系统状态检查」和「实例状态检查」都显示正常。如果状态检查失败,可能需要先停止再启动实例(注意停止会释放临时存储,重要数据先备份),或者创建AMI后恢复实例试试。
按照这些步骤逐一排查,应该能找到问题所在。如果还是不行,可以补充下实例所在VPC、子网的配置细节,咱们再进一步分析。
内容的提问来源于stack exchange,提问作者muazfaiz

