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

Github Actions CI/CD测试工作流执行失败:SSH握手认证问题求助

排查GitHub Actions SSH认证失败问题

我来帮你一步步排查这个SSH握手失败的问题,先从最容易忽略的细节入手:

1. 先修复YAML语法错误

看你的testing.yml配置里,username字段后面多了个逗号:

username: ubuntu,

这个逗号会导致YAML解析异常,SSH客户端实际尝试用的用户是ubuntu,(带逗号),这肯定无法匹配服务器上的用户。先把逗号去掉,改成:

username: ubuntu

2. 验证SSH密钥的有效性

本地测试连接

先在本地用相同的私钥测试连接服务器,确认密钥本身没问题:

ssh -i /path/to/your/private/key ubuntu@server_ip

如果本地连接失败,检查服务器端的配置:

  • 服务器上ubuntu用户的~/.ssh/authorized_keys文件里必须包含对应公钥的完整内容,不能有换行或空格错误。
  • 确保~/.ssh目录权限是700,authorized_keys文件权限是600,权限过松会被SSH服务拒绝:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

确认GitHub Secrets中的密钥

检查仓库的Settings -> Secrets and variables -> Actions里,SSH_KEY这个Secret是否是完整的私钥内容,必须包含开头的-----BEGIN RSA PRIVATE KEY-----和结尾的-----END RSA PRIVATE KEY-----,不能遗漏任何换行。

3. 检查服务器SSH服务配置

登录服务器,编辑/etc/ssh/sshd_config文件,确认以下配置:

  • PubkeyAuthentication yes(确保公钥认证开启,没有被注释)
  • 如果PasswordAuthentication设为no,必须保证公钥认证正常工作;测试阶段可以临时改成yes,用密码连接验证服务器是否可达。

修改后重启SSH服务:

sudo systemctl restart sshd

4. 排查GitHub Actions中的密钥传递

可以在工作流中添加一个调试步骤,确认密钥能被正确读取(注意不要泄露完整密钥):

- name: Debug SSH Key
  run: echo "${{ secrets.SSH_KEY }}" | head -2
  if: always()

如果输出能显示私钥的开头行,说明密钥传递正常;如果没有输出,检查Secret的名称是否完全匹配(大小写敏感)。

5. 使用稳定版本的ssh-action

你当前使用的是appleboy/ssh-action@master,master分支可能包含未稳定的更新,建议换成固定的稳定版本,比如:

uses: appleboy/ssh-action@v0.1.10

按照以上步骤逐一排查,应该能解决这个认证失败的问题。

内容的提问来源于stack exchange,提问作者MD Nasirul Islam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 12:52:40