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

使用appleboy/ssh-action部署Laravel至DigitalOcean时SSH认证失败求助

解决appleboy/ssh-action SSH认证失败问题(ssh: handshake failed)

以下是针对你遇到的ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain错误的排查和解决步骤:

  • 检查SSH私钥格式完整性
    确认GitHub Secrets中存储的SSH_KEY是完整的私钥文件内容,必须包含开头的-----BEGIN OPENSSH PRIVATE KEY-----和结尾的-----END OPENSSH PRIVATE KEY-----,且中间的密钥行没有缺失或多余空格。复制私钥时容易漏掉首尾标记或换行,导致密钥无效。你可以在本地将私钥保存为临时文件,执行ssh-keygen -y -f 私钥文件名验证,如果命令能输出对应公钥,说明私钥格式正常;若报错则需重新导出正确的私钥。

  • 确认服务器端公钥配置
    注意你能从服务器克隆GitHub仓库是服务器→GitHub的单向认证,而当前是GitHub Actions→服务器的反向认证,两者无关。需登录DigitalOcean Droplet,切换到${{ secrets.SSH_USERNAME }}对应的用户,检查~/.ssh/authorized_keys文件是否包含该私钥对应的公钥:

    1. 公钥必须完整,结尾可添加注释(如github-actions-deploy)方便识别;
    2. ~/.ssh目录权限需设为700,authorized_keys文件权限设为600,否则SSH会拒绝使用该密钥。
  • 检查服务器SSH服务配置
    编辑服务器的/etc/ssh/sshd_config文件,确保以下配置项正确:

    PubkeyAuthentication yes
    AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2
    

    修改后执行sudo systemctl restart sshd重启SSH服务生效。如果之前禁用了密码认证,可临时开启PasswordAuthentication yes测试,排除密钥问题后再关闭。

  • 添加调试日志定位问题
    在appleboy/ssh-action的配置中加入debug: true,获取详细的SSH认证日志:

    - name: Deploy to testing server
      uses: appleboy/ssh-action@master
      with:
        host: ${{ secrets.SSH_HOST}}
        username: ${{ secrets.SSH_USERNAME}}
        key: ${{secrets.SSH_KEY}}
        debug: true
        script: |
          cd /pathOfTheProject
          php artisan down
          git stash
          git checkout testing
          git pull
          npm install --force
          npm run build
          composer update --optimize-autoloader
          php artisan migrate --force
          php artisan optimize:clear
          php artisan optimize
          php artisan up
    

    运行GitHub Actions后查看日志,调试信息会显示密钥加载状态、认证过程中的具体错误,帮助快速定位问题。

  • 本地测试密钥连接
    将GitHub Secrets中的私钥保存到本地文件(比如gh_actions_key),修改文件权限为600,执行:

    ssh -i gh_actions_key $SSH_USERNAME@$SSH_HOST
    

    如果本地连接失败,说明密钥或服务器配置存在问题;如果本地能正常连接,则问题大概率出在GitHub Secrets的密钥复制过程中(比如格式错误)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:53:16