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

GitLab迁移GitHub后CI/CD SSH部署超时问题求助

解决GitHub Actions SSH部署超时问题

以下是针对你遇到的GitHub Actions SSH部署超时问题的几种解决方案,按优先级排序:

1. 手动模拟GitLab CI的SSH配置逻辑(最可靠)

直接复用你在GitLab中验证过的SSH配置步骤,避免依赖第三方action的封装问题:

name: Node.js CD
on:
  push:
    branches: [ "main" ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Deploy to remote server
        env:
          HOST: ${{ secrets.HOST }}
          USERNAME: ${{ secrets.USERNAME }}
          PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
          PORT: ${{ secrets.PORT }}
          COMMAND: ${{ secrets.COMMAND }}
        run: |
          # 启动ssh-agent并添加密钥
          eval $(ssh-agent -s)
          echo "$PRIVATE_KEY" | tr -d '\r' | ssh-add -
          
          # 配置ssh目录权限
          mkdir -p ~/.ssh
          chmod 700 ~/.ssh
          
          # 添加服务器主机密钥到known_hosts
          ssh-keyscan -p $PORT -t rsa $HOST >> ~/.ssh/known_hosts
          chmod 644 ~/.ssh/known_hosts
          
          # 执行部署命令
          ssh -p $PORT $USERNAME@$HOST "$COMMAND"

这种方式和你原来GitLab CI的逻辑完全一致,能排除第三方action的潜在问题,同时方便你在步骤中添加调试命令(比如cat ~/.ssh/known_hosts)排查细节。

2. 修复appleboy/ssh-action的配置问题

如果你坚持使用appleboy/ssh-action,需要补充以下关键配置:

steps:
  - name: executing remote ssh commands
    uses: appleboy/ssh-action@v0.1.10
    with:
      host: ${{ secrets.HOST }}
      username: ${{ secrets.USERNAME }}
      key: ${{ replace(secrets.PRIVATE_KEY, '\r', '') }} # 处理Windows换行符
      port: ${{ secrets.PORT }}
      script: ${{ secrets.COMMAND }}
      host_key: ${{ secrets.HOST_KEY }} # 添加服务器主机密钥
      timeout: "60s" # 延长超时时间
  • 主机密钥配置:在本地执行ssh-keyscan -p <你的端口> <你的主机>,将输出内容存入GitHub Secrets的HOST_KEY中;
  • 密钥格式处理:用replace函数去除密钥中的回车符,避免格式错误;
  • 延长超时:默认超时可能不足以完成连接,调整为60秒或更长。

3. 排查服务器端问题

  • 查看服务器的SSH日志(通常在/var/log/auth.log或/var/log/secure),确认是否有GitHub Actions runner的连接请求记录,判断是连接失败还是认证失败;
  • 检查服务器防火墙/安全组规则,确保允许GitHub Actions的IP段访问SSH端口(可临时开放所有IP测试,确认后再限制范围);
  • 验证服务器~/.ssh/authorized_keys文件的权限:文件权限必须为600,所在目录权限为700,否则SSH会拒绝认证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:07:49