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

无法通过GitHub Action连接AWS EC2实例问题求助

解决GitHub Action部署AWS EC2连通性失败的问题

核心误区:别用ping测试连通性

AWS EC2安全组默认拦截ICMP协议请求(ping依赖ICMP),所以ping显示100%丢包是正常现象——这并不代表网络不通,只是协议被安全规则拦截了。请直接改用端口连通性测试替代ping。

具体修复步骤

1. 替换工作流中的连通性测试命令

把原步骤里的ping <EC2_IP>换成以下任意一种端口测试命令:

  • 用nc测试SSH端口(22):
    nc -zv <EC2_IP> 22
    
  • 用telnet测试SSH端口:
    telnet <EC2_IP> 22
    
  • 用SSH静默测试连接:
    ssh -o ConnectTimeout=5 -o BatchMode=yes <EC2_USER>@<EC2_IP> echo "Connected" || exit 1
    

2. 确认GitHub Action的IP访问权限

GitHub Action的运行机器来自GitHub的托管IP池,即使你把SSH规则源设为0.0.0.0/0,仍可能遇到实例级防火墙拦截:

  • 先保持0.0.0.0/0的SSH规则,确认Action能正常连接后,再通过GitHub官方公布的IP范围(无需外链,可在GitHub Docs中搜索“GitHub IP addresses”)缩小安全组允许的源范围。

3. 检查EC2实例本地防火墙

登录EC2实例,排查本地防火墙是否拦截了SSH:

  • 针对ufw防火墙:
    sudo ufw status
    
    确保22/tcp规则为允许状态,且未限制特定IP。
  • 针对iptables防火墙:
    sudo iptables -L INPUT -v
    
    确认存在允许tcp dpt:22的规则,无全局拒绝类条目。

4. 二次验证GitHub Secrets信息

务必核对以下Secrets的准确性:

  • EC2公网IP/域名是否正确
  • SSH用户名(Ubuntu实例默认是ubuntu,Amazon Linux默认是ec2-user)
  • SSH私钥是否为完整PEM格式(需保留开头-----BEGIN RSA PRIVATE KEY-----和结尾-----END RSA PRIVATE KEY-----,无换行丢失)

5. 排查EC2实例网络基础配置

  • 确认实例处于运行中状态,已分配公网IP
  • 检查实例所属VPC是否关联互联网网关(IGW),路由表是否指向IGW
  • 在实例内部执行ping 8.8.8.8,验证实例自身能否访问公网

调试技巧

如果问题仍未解决,在GitHub Action步骤中添加SSH详细日志输出:

ssh -vvv <EC2_USER>@<EC2_IP>

通过日志可定位连接过程中的具体错误环节(比如密钥验证失败、端口被拒等)。

内容的提问来源于stack exchange,提问作者HUY PHAM MINH

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:22:36