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

使用deployphp/action部署时SSH认证失败,求助排查方向

GitHub Actions部署时SSH权限拒绝(密钥未被使用)排查方向

问题背景

在GitHub Actions的deploy.yml中配置了以下部署片段:

- name: Deploy
  uses: deployphp/action@v1
  with:
    private-key: ${{ secrets.PRIVATE_KEY }}
    dep: deploy ${{ secrets.SSH_HOST }} -o branch=main -o keep_releases=3 -vvv

其中PRIVATE_KEY和SSH_HOST已在GitHub Actions Secrets中定义,但部署日志持续出现SSH权限拒绝错误,核心报错如下:

[***] ***@113.30.151.149: Permission denied (publickey,password).

已通过sshpass-action确认GitHub Actions可登录服务器,且本地使用该私钥登录无问题,但服务器日志显示GitHub Actions尝试用密码而非密钥登录。

排查方向

  • 检查私钥格式与完整性:确认Secrets中存储的PRIVATE_KEY是否完整包含开头的-----BEGIN OPENSSH PRIVATE KEY-----和结尾的-----END OPENSSH PRIVATE KEY-----,且换行符未被自动替换。可在Secrets编辑界面重新粘贴私钥,确保格式完全匹配本地私钥。
  • 验证私钥是否被正确加载到ssh-agent:在Deploy步骤前添加调试步骤,执行ssh-add -l命令查看已加载的密钥列表,确认目标私钥是否存在。示例调试步骤:
    - name: Check loaded SSH keys
      run: ssh-add -l
    
  • 检查服务器端SSH配置与权限:
    • 确认服务器/etc/ssh/sshd_config中开启公钥认证(PubkeyAuthentication yes),未禁用相关加密算法;
    • 检查目标用户的~/.ssh/authorized_keys文件权限必须为600,所属用户和用户组正确,避免权限过宽导致SSH拒绝使用密钥;
    • 确认服务器防火墙未限制GitHub Actions的IP段访问SSH端口。
  • 确认deploy命令的主机参数格式:检查SSH_HOST是否包含完整的用户信息(如deploy_user@113.30.151.149),若仅传递IP,deployphp可能使用默认用户(如runner)登录,而该用户的authorized_keys中未配置对应公钥。
  • 检查环境变量传递:确认SSH_AUTH_SOCK环境变量是否被正确传递到dep命令的执行环境中,避免ssh-agent的密钥代理未生效。
  • 排查私钥是否带密码短语:若私钥设置了密码保护,deployphp/action无法自动解锁,需替换为无密码的私钥,或在Action中添加手动解锁私钥的步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 06:22:32