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

GitLab CI/CD连接EC2服务器超时,请求技术指导

解决GitLab CI/CD连接EC2 SSH超时问题

你遇到的错误是:ssh: 连接到主机 ****** 22端口:连接超时,按以下步骤排查解决:

网络层面排查(最常见诱因)

  • 检查EC2安全组:确保入站规则允许GitLab Runner的IP访问22端口。如果用GitLab共享Runner,需添加Runner的IP段;自托管Runner则添加Runner服务器的公网IP。
  • 检查EC2网络ACL:确认入站、出站规则都放行22端口流量(网络ACL默认拒绝所有,别漏加规则)。
  • 手动验证Runner网络:在GitLab Runner所在服务器执行ssh ubuntu@$SERVER_IP,看是否同样超时,排除Runner本身的网络限制。

CI变量配置检查

  • 确认SSH_PRIVATE_KEY变量未勾选"保护变量"(除非你的执行分支是受保护分支),否则非保护分支无法读取该变量。
  • 核对SERVER_IP变量:必须是EC2的公网IP/弹性IP,内网IP无法被外部的GitLab Runner访问。

优化SSH配置与调试

调整你的CI脚本,增加网络测试和SSH详细日志,方便定位问题:

before_script:
  - 'which ssh-agent || ( apt-get install -qq openssh-client )'
  - eval $(ssh-agent -s)
  - echo "${SSH_PRIVATE_KEY}" | tr -d '\r' | ssh-add - > /dev/null
  - mkdir -p ~/.ssh
  - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\tUserKnownHostsFile /dev/null\n\n" > ~/.ssh/config'
  # 先测试EC2网络连通性
  - ping -c 3 $SERVER_IP

script:
  # 加-vv输出SSH详细日志,方便排查认证/连接细节
  - ssh -vv ubuntu@$SERVER_IP "echo 连接成功"

其他排查点

  • 确认EC2实例处于正常运行状态,公网IP未被意外释放。
  • 如果EC2使用堡垒机/代理,需在SSH命令中添加代理参数,或在.ssh/config中配置代理规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:27:27