尝试通过Github Actions部署Laravel遇SSH认证错误求助
解决Github Actions部署Laravel时的SSH认证错误
错误信息:
2022/07/21 19:58:13 ssh.ParsePrivateKey: ssh: no key found scp file to server. drone-scp error: error copy file to dest: xxx.xxx.xxx.xxx, error message: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none], no supported methods remain
排查与解决步骤:
检查私钥格式与完整性
确保使用的是PEM格式私钥(以-----BEGIN RSA PRIVATE KEY-----开头、-----END RSA PRIVATE KEY-----结尾),若为OpenSSH新格式(-----BEGIN OPENSSH PRIVATE KEY-----),可通过以下命令转换:ssh-keygen -p -m PEM -f /path/to/your/private/key粘贴到Github Secrets时要完整复制私钥内容,包括首尾标记行,避免多余换行或空格。
验证Github Secrets配置
确认仓库的Settings -> Secrets and variables -> Actions中已添加正确的私钥(如命名为SSH_PRIVATE_KEY),且在Workflow文件中正确引用:env: SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}切勿将公钥误作为私钥填入Secrets。
检查服务器SSH配置
- 确认服务器目标用户的
~/.ssh/authorized_keys文件已添加对应私钥的公钥,同时设置权限:chmod 600 ~/.ssh/authorized_keys、chmod 700 ~/.ssh - 检查
/etc/ssh/sshd_config中开启了公钥认证:PubkeyAuthentication yes,并确保未禁用相关加密算法 - 修改配置后重启sshd服务:
sudo systemctl restart sshd
- 确认服务器目标用户的
核对drone-scp参数配置
确保Workflow中drone-scp的参数正确,示例配置:- name: 部署到服务器 uses: appleboy/scp-action@v0.1.4 with: host: ${{ secrets.SSH_HOST }} username: ${{ secrets.SSH_USERNAME }} key: ${{ secrets.SSH_PRIVATE_KEY }} source: "." target: "/var/www/your-laravel-app"重点检查
key、host、username参数是否正确配置。
内容的提问来源于stack exchange,提问作者Joan T
相关产品推荐
相关产品推荐

