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

CI4项目Github Actions部署失败:SSH权限被拒问题求助

问题分析与解决方案

核心问题1:rsync命令私钥参数错误

你在rsync的-e选项里直接传入了私钥文本内容,但ssh -i参数要求的是私钥文件的路径,不是密钥本身。这会导致SSH无法正确读取密钥,直接触发认证失败。

核心问题2:SSH配置遗漏目标服务器主机密钥

你用ssh-keyscan github.com添加的是GitHub的主机密钥,但实际要连接的是192.168.1.1,虽然日志显示自动添加了主机密钥,但提前配置能避免潜在的验证异常。


修复后的完整部署配置

修改deploy.yml的两个关键步骤,调整私钥引用方式并添加目标服务器的主机密钥:

name: Deploy to Server

on:
  push:
    branches:
      - master

jobs:
  deploy:
    runs-on: ubuntu-latest

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

      - name: Setup SSH
        run: |
          mkdir -p ~/.ssh
          echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
          chmod 600 ~/.ssh/id_rsa
          # 添加目标服务器的主机密钥到known_hosts
          ssh-keyscan -p 222 192.168.1.1 >> ~/.ssh/known_hosts
          chmod 644 ~/.ssh/known_hosts

      - name: Sync files to server
        run: |
          rsync -avz --delete-after \
          -e "ssh -i ~/.ssh/id_rsa -p 222 -o StrictHostKeyChecking=no" \
          ./ root@192.168.1.1:/var/www/crm

额外排查点(若修复后仍失败)

  • 服务器端权限校验:
    服务器上~root/.ssh目录权限必须为700,authorized_keys文件权限必须为600,否则SSH会拒绝使用密钥认证:
    chmod 700 ~root/.ssh
    chmod 600 ~root/.ssh/authorized_keys
    
    同时确认authorized_keys内已正确添加对应私钥的公钥内容,公钥末尾无多余空格或换行。
  • 私钥有效性确认:
    核实添加到Github Secrets的SSH_PRIVATE_KEY确实是无密码的私钥,带密码的私钥需要额外配置SSH Agent解锁,你提到是无密码的,需再次确认格式正确。
  • Root登录权限检查:
    查看服务器/etc/ssh/sshd_config文件,确认PermitRootLogin设置为yes或prohibit-password(允许密钥登录但禁止密码登录),若为no则无法用Root用户密钥登录。修改后重启SSHD服务:
    systemctl restart sshd
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:59:56