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

配置带真实IP的GitHub CI/CD流水线遇SSH连接超时求助

解决GitHub Actions SSH连接超时问题

一、基础网络连通性排查

  • 验证公网端口可达性:在本地执行telnet 119.xx.xx.xx 1322或ssh -p 1322 username@119.xx.xx.xx,确认该端口能否从公网访问。如果本地也无法连接,问题不在GitHub Actions,需排查服务器端网络配置。
  • 检查防火墙/安全组规则:确认服务器所在云服务商的安全组已开放1322端口的入站规则,允许公网IP(或GitHub Actions的IP段)访问;同时检查服务器本地防火墙(如Windows Defender防火墙)是否放行1322端口的SSH流量。

二、适配GitHub Actions Runner环境

  • 切换至Linux Runner:Windows环境下的scp/ssh工具存在兼容性问题,建议将runs-on改为ubuntu-latest,同时优化密钥配置逻辑,避免权限或环境差异导致的问题。修改后的配置示例:
jobs:
 deploy:
    runs-on: ubuntu-latest
    needs: build_publish_api

    steps:
    - name: Checkout repository
      uses: actions/checkout@v3

    - name: Download API artifacts
      uses: actions/download-artifact@v4
      with:
        name: api-artifacts

    - name: Deploy API to server
      run: |
        mkdir -p ~/.ssh
        echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/deploy_key
        chmod 600 ~/.ssh/deploy_key
        echo -e "Host 119.xx.xx.xx\n  Port 1322\n  IdentityFile ~/.ssh/deploy_key\n  StrictHostKeyChecking no" >> ~/.ssh/config
        scp -r ./build/API/ username@119.xx.xx.xx:/C/inetpub/wwwroot/BRPPIMS/API
  • 禁用主机密钥校验:通过StrictHostKeyChecking no避免首次连接时的交互式确认,防止连接因等待人工输入中断。

三、端口转发配置验证

  • 确认转发规则有效性:若使用端口映射(如路由器或云服务端口转发),检查外部端口1322是否正确映射到服务器内部的SSH端口(默认22,若修改过则对应自定义端口),且转发协议为TCP,目标IP为服务器内网IP。
  • 检查端口监听状态:在服务器上执行netstat -ano | findstr :1322(Windows)或ss -tulpn | grep :1322(Linux),确认1322端口(或转发的内部端口)被SSH服务正常监听。

四、SSH密钥配置验证

  • 检查私钥完整性:确认GitHub Secrets中SSH_PRIVATE_KEY为完整的PEM格式(开头-----BEGIN RSA PRIVATE KEY-----,结尾-----END RSA PRIVATE KEY-----),无换行丢失或格式错误。
  • 确认公钥已配置:将对应公钥添加至服务器的C:\Users\username\.ssh\authorized_keys(Windows)或~/.ssh/authorized_keys(Linux)文件,Windows需确保该文件无过度继承权限,Linux需设置authorized_keys权限为600、.ssh目录权限为700。

内容的提问来源于stack exchange,提问作者SYED NAWAZ PRINCE

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 13:35:02