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

Github Actions SSH握手失败:无可用认证方法问题求助

解决SSH认证失败:ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain

1. 检查私钥配置完整性

  • 确认Github Secrets中SSH_PRIVATE_KEY的内容完整:必须包含完整的私钥头-----BEGIN OPENSSH PRIVATE KEY-----、尾-----END OPENSSH PRIVATE KEY-----,中间换行无丢失、无多余空格。
  • 若自托管Runner服务器本地存储了私钥文件,确保文件权限为600,执行命令:
    chmod 600 ~/.ssh/id_rsa
    

2. 验证目标服务器公钥配置

  • 将生成的公钥(id_rsa.pub内容)添加到目标服务器对应用户的~/.ssh/authorized_keys文件中。
  • 确保authorized_keys文件权限为600,~/.ssh目录权限为700,执行命令:
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    
  • 清理authorized_keys中重复或无效的公钥条目,避免认证冲突。

3. 调整目标服务器SSH服务端设置

  • 登录目标服务器,编辑/etc/ssh/sshd_config,确保以下配置项开启:
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
    # 若需要临时测试,可临时开启密码认证,测试完成后再关闭
    PasswordAuthentication yes
    
  • 重启SSH服务生效:
    sudo systemctl restart sshd
    
    (不同系统可能使用service ssh restart命令)

4. 修正Github Actions YAML配置问题

修复缩进错误(YAML对缩进严格)

原配置中存在多处缩进错误,会导致流程逻辑异常,修正后示例:

name: Deploy İşlemi

on:
  push:
    branches:
      - main
      - develop

jobs:
  deploy-main:
    runs-on: self-hosted
    if: github.ref == 'refs/heads/main'
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: SSH Deploy to Main Branch
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USERNAME }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          port: ${{ secrets.SSH_PORT }}
          script: |
            cd x
            git pull origin main

  deploy-develop:
    runs-on: self-hosted
    if: github.ref == 'refs/heads/develop'
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: SSH Deploy to Develop Branch
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USERNAME }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          port: ${{ secrets.SSH_PORT }}
          script: |
            cd y
            git pull origin develop

移除冗余SSH Agent步骤

appleboy/ssh-action可直接使用私钥,无需额外通过webfactory/ssh-agent启动代理,避免环境冲突。

5. 手动测试SSH连接

在自托管Runner服务器上执行手动SSH命令,排除Runner环境外的问题:

ssh -i /path/to/private-key -p $SSH_PORT $SSH_USERNAME@$SSH_HOST
  • 若手动连接失败:问题出在密钥对或服务器SSH配置,按前面步骤排查。
  • 若手动连接成功:检查Github Secrets的名称拼写是否正确(如SSH_PRIVATE_KEY是否写错),确认Secrets值未被意外修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 00:27:23