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

GitHub Actions SSH密钥未找到:scp-action部署认证失败求助

问题解决:appleboy/scp-action SSH密钥解析失败导致认证错误

核心问题

使用appleboy/scp-action部署应用时,出现ssh.ParsePrivateKey: ssh: no key found错误,最终触发SSH握手失败、认证失败(ssh: unable to authenticate, attempted methods [none], no supported methods remain),已配置完整私钥到GitHub Secrets但无效。

解决方案

1. 确认私钥格式与完整性

  • 必须使用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时,完整复制私钥所有内容,包括首尾注释行,不要添加多余引号、换行或空格。

2. 验证私钥可用性

在本地用该私钥手动连接服务器,确认私钥本身有效:

ssh -i /path/to/private_key ${USERNAME}@${HOST} -p ${PORT}

如果连接失败,先排查服务器端公钥配置:

  • 服务器~/.ssh/authorized_keys必须包含对应公钥
  • 确保文件权限正确:~/.ssh目录权限700,authorized_keys文件权限600
  • 服务器sshd_config中开启PubkeyAuthentication yes

3. 调整GitHub Actions配置

  • 改用稳定版本的scp-action,避免master分支兼容性问题:
  • 如果私钥设置了密码,添加passphrase参数

修改后的示例配置:

name: deploy

on:
  push:
    branches:
      - main
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Deploy to Server
        uses: appleboy/scp-action@v0.1.4
        with:
          host: ${{ secrets.HOST }}
          port: ${{ secrets.PORT }}
          username: ${{ secrets.USERNAME }}
          key: ${{ secrets.KEY }}
          # 私钥有密码时取消注释
          # passphrase: ${{ secrets.PASSPHRASE }}
          source: "."
          target: /
          strip_components: 1

4. 重新配置GitHub Secrets

删除原有的KEY Secrets,重新粘贴格式正确的私钥文本,避免粘贴过程中出现格式截断或乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:47:03