You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何解决AWS EC2中SSH端口22连接超时错误

解决AWS EC2 SSH连接超时的问题

这种SSH连接超时的情况我碰到过好多次,大概率是网络或者EC2的配置问题,咱们一步步来排查:

1. 优先检查EC2安全组配置(最常见原因)

这是90%以上SSH超时问题的根源:

  • 登录AWS控制台,找到你的EC2实例,点击实例详情里的安全组链接
  • 进入安全组的「入站规则」页面,确认存在一条规则:
    • 类型:SSH(端口22)
    • 源:填写你的本地公网IP(可以通过搜索引擎查询,格式如xxx.xxx.xxx.xxx/32),如果不确定可以临时用0.0.0.0/0测试(注意:测试完成后一定要改回你的IP,否则会暴露SSH端口给所有人)
  • 添加或修改规则后,等待1-2分钟再尝试SSH连接

2. 检查子网的网络ACL(容易被忽略)

如果安全组没问题,就看看网络ACL:

  • 在EC2控制台找到实例所在的子网,查看关联的网络ACL
  • 确认入站规则允许22端口的TCP流量(源任意或你的IP)
  • 确认出站规则允许临时端口(1024-65535)的TCP流量(这是SSH响应需要的)

3. 验证实例的公网IP和状态

  • 确保EC2实例处于running状态,并且有有效的公网IP(或弹性IP)
  • ping ec2-XX-XX-XX-XX.compute-1.amazonaws.com测试域名解析的IP是否和实例的公网IP一致,如果解析错误,可能是DNS问题或者实例的公网IP已经更换

4. 排查本地网络限制

很多时候是本地网络的问题:

  • 切换到手机热点再尝试连接,排除公司/家庭路由器屏蔽22端口的可能
  • 检查本地防火墙(比如Windows防火墙)是否阻止了SSH的出站流量
  • telnet ec2-XX-XX-XX-XX.compute-1.amazonaws.com 22测试端口连通性,如果telnet也超时,说明本地到EC2的22端口链路不通

5. 其他次要排查项

  • 密钥权限:虽然你是超时不是权限错误,但还是确认下GitBash里密钥文件的权限:chmod 600 portfolioec2key.pem,权限不对会导致SSH报错,但不是超时
  • 实例初始化:如果是刚启动的实例,可能还在初始化系统,等3-5分钟再尝试
  • 实例内部防火墙:如果能通过AWS Systems Manager的Session Manager连接到实例,检查Ubuntu的ufw状态:sudo ufw status,默认ufw是关闭的,如果开启了要确保允许22端口

按照这个顺序排查,基本能解决问题。

内容的提问来源于stack exchange,提问作者Walluri

火山引擎 最新活动