Github Actions中appleboy/ssh-action连接Ubuntu提示SSH密钥未找到
问题原因及解决办法
核心问题:密钥格式不兼容
你用PuttyGen生成的默认是PPK格式私钥,而appleboy/ssh-action依赖的OpenSSH库只能解析OpenSSH标准的PEM格式私钥,这就是报错ssh.ParsePrivateKey: ssh: no key found的根本原因。
解决步骤
1. 转换私钥为OpenSSH格式
打开PuttyGen,按以下操作:
- 加载你之前生成的PPK私钥文件
- 点击顶部菜单栏的「Conversions」→「Export OpenSSH key」
- 导出时如果不需要密码保护,直接点击保存;如果要设置密码,记得后续在Action里添加密码参数
- 把导出的这个私钥的完整内容复制到Github Secrets的
SSH_KEY中
2. 验证密钥格式
导出的私钥开头应该是类似这样的:
-----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEAz... ... -----END RSA PRIVATE KEY-----
确保复制到Secrets时没有遗漏开头、结尾的标记,也没有多余的换行或空格。
3. 可选:如果私钥有密码保护
如果导出时设置了私钥密码,需要在Action配置里加上passphrase参数:
name: Deploy project on Ubuntu uses: appleboy/ssh-action@v1.0.3 with: host: ${{secrets.SSH_HOST}} port: ${{secrets.SSH_PORT}} username: ${{secrets.SSH_USERNAME}} key: ${{secrets.SSH_KEY}} passphrase: ${{secrets.SSH_PASSPHRASE}} # 新增密码参数
4. 额外检查
确认Ubuntu服务器上~/.ssh/authorized_keys里的公钥是OpenSSH格式(PuttyGen里可以直接复制公钥,格式是ssh-rsa AAAAB3NzaC1yc2E...开头),确保公钥没有格式错误。
内容的提问来源于stack exchange,提问作者Krunal
相关产品推荐
相关产品推荐

