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_keysauthorized_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
相关产品推荐
相关产品推荐

