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

Github Action SSH连接失败问题排查与求助

解决Github Action SSH连接VPS失败问题

问题核心原因分析

  1. 公私钥混淆:你在Github Secrets中存储的是公钥,但Action需要使用私钥进行SSH认证;同时代码中变量名SSH_PRIVATE_KEY对应的值是公钥的Secret,完全搞反。
  2. Runner路径误解:Github Action的ubuntu-latest runner是云端的临时机器,并非你的VPS,所以/home/adam/.ssh/id_rsa这个路径在runner上根本不存在,无法直接引用。
  3. 公钥存放错误:你将公钥放到了/root/.ssh/authorized_keys,但登录用户是adam,公钥必须放在/home/adam/.ssh/authorized_keys才能被识别。
  4. 权限配置错误:.ssh目录的权限应该设为700(需要执行权限才能进入目录),而你设置成了600,导致SSH无法读取目录内的密钥文件。

分步解决方案

一、修正VPS端配置

  • 移动公钥到正确路径并设置权限:
    # 确保adam用户的.ssh目录存在
    mkdir -p /home/adam/.ssh
    # 复制公钥到adam的authorized_keys(如果之前已复制到root目录)
    cp /root/.ssh/authorized_keys /home/adam/.ssh/
    # 修改文件所属用户和权限
    chown adam:adam /home/adam/.ssh/authorized_keys
    chmod 600 /home/adam/.ssh/authorized_keys
    
  • 修正.ssh目录权限:
    chmod 700 /home/adam/.ssh
    

二、修正Github Action配置

  1. 更新Github Secrets:

    • 把你生成的SSH私钥(id_rsa文件内容)添加到仓库的Secrets中,命名为VPS_SSH_PRIVATE_KEY。
  2. 修改Action代码:
    需要在runner中临时创建私钥文件,设置正确权限后再执行SSH连接:

    name: Run script on VPS
    on:
      push:
        branches: [master]
    jobs:
      run-script:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout code
            uses: actions/checkout@v2
          - name: Setup SSH key
            env:
              SSH_PRIVATE_KEY: ${{ secrets.VPS_SSH_PRIVATE_KEY }}
            run: |
              # 创建runner上的.ssh目录
              mkdir -p ~/.ssh
              # 将私钥写入文件
              echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
              # 设置私钥权限(必须600,否则SSH会拒绝使用)
              chmod 600 ~/.ssh/id_rsa
          - name: Run script on VPS
            run: |
              ssh -o StrictHostKeyChecking=no \
                  -o PasswordAuthentication=no \
                  -i ~/.ssh/id_rsa \
                  adam@your_vps_ip \
                  "bash /home/adam/script.sh"
    

三、额外验证点

  • 确认私钥内容完整,没有在复制到Github Secrets时丢失换行或字符。
  • 验证VPS的SSH配置文件(/etc/ssh/sshd_config)中开启了公钥认证:确保PubkeyAuthentication yes,且没有限制adam用户的登录权限。
  • 重启VPS的SSH服务确保配置生效:systemctl restart sshd

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 10:55:13