GitHub Actions scp-action步骤失败,本地同SSH密钥可正常运行
解决GitHub Actions中scp-action提示"can't connect without a private SSH key or password"的问题
以下是针对Hostinger VPS场景的可行解决方案:
1. 修复GitHub Secrets的密钥格式
GitHub Secrets保存多行文本时,直接粘贴私钥可能丢失换行符,导致action无法识别完整密钥。
- 打开本地私钥文件,确认包含完整换行(包括
-----BEGIN OPENSSH PRIVATE KEY-----和-----END OPENSSH PRIVATE KEY-----之间的每一行) - 将私钥复制到记事本确认换行正常后,再粘贴到GitHub仓库的
VPS_DEPLOY_USER_KEYSecret中,避免直接从终端复制导致格式错乱。
2. 显式指定密钥格式
部分版本的scp-action默认不自动识别OpenSSH格式密钥,需显式声明:
修改scp-action步骤配置,添加key_format: openssh参数:
- name: Deploy docker-compose to VPS if: github.event_name != 'pull_request' uses: appleboy/scp-action@master with: host: ${{ secrets.VPS_HOST }} username: ${{ secrets.VPS_USER }} key: ${{ secrets.VPS_DEPLOY_USER_KEY }} key_format: openssh # 新增该行指定密钥格式 port: ${{ secrets.VPS_SSH_PORT }} source: "docker-compose.yml" target: "${{ secrets.VPS_DEPLOY_PATH }}/"
3. 使用稳定版本的action
当前使用的master分支可能存在不稳定更新,建议替换为指定稳定版本(与ssh-action版本匹配):
uses: appleboy/scp-action@v0.1.4 # 替换原master分支为稳定版本
4. 验证VPS的SSH配置
确保Hostinger VPS开启了密钥登录:
- 登录VPS,编辑
/etc/ssh/sshd_config文件,确认PubkeyAuthentication yes(若被注释则取消注释) - 重启sshd服务:
sudo systemctl restart sshd
内容的提问来源于stack exchange,提问作者igortorati
相关产品推荐
相关产品推荐

