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

使用actions/checkout@v3拉取同组织仓库失败求助

自托管GitHub Enterprise中拉取依赖仓库的SSH主机密钥验证失败排查方案

问题背景

在自托管GitHub Enterprise实例的同一组织下,仓库A依赖仓库B,需要在A的Workflow中同时拉取两个仓库。已生成SSH密钥对,将公钥添加到B的部署密钥,私钥存入A的Actions密钥,但拉取B时出现以下错误:

No ECDSA host key is known for github.company.com and you have requested strict checking.
Host key verification failed.
Error: fatal: Could not read from remote repository.

拉取A完全正常,尝试过配置SSH代理但未解决。

排查方向

1. 给自托管Runner添加GitHub Enterprise主机密钥

自托管Runner默认未存储你的GitHub Enterprise实例的主机密钥,SSH连接时会触发严格校验失败:

  • 登录Runner所在服务器,执行命令获取主机密钥:
    ssh-keyscan github.company.com
    
  • 将输出内容添加到Runner用户的~/.ssh/known_hosts文件(通常是/home/runner/.ssh/known_hosts);也可以在Workflow中动态添加:
    - name: 添加GitHub Enterprise主机密钥
      run: |
        mkdir -p ~/.ssh
        ssh-keyscan github.company.com >> ~/.ssh/known_hosts
        chmod 600 ~/.ssh/known_hosts
    

2. 检查部署密钥的配置

  • 确认仓库B的部署密钥已正确添加,公钥内容无多余空格、换行,且开启了读权限(仅拉取无需写权限,但需确保权限勾选正确)。

3. 验证私钥的有效性

  • 检查A仓库中存储的PRIVATE_KEY_B私钥是否完整,开头为-----BEGIN OPENSSH PRIVATE KEY-----、结尾为-----END OPENSSH PRIVATE KEY-----,无多余格式错误。
  • 可在Workflow中添加步骤确保私钥权限正确:
    - name: 设置私钥权限
      run: |
        echo "${{ secrets.PRIVATE_KEY_B }}" > ~/.ssh/id_ed25519_b
        chmod 600 ~/.ssh/id_ed25519_b
    

4. 排查Runner的网络与SSH配置

  • 在Runner服务器上执行ssh -T git@github.company.com(使用对应私钥),验证能否正常连接GitHub Enterprise实例,确认SSH端口(默认22)可访问。
  • 检查Runner的~/.ssh/config文件,确保无针对github.company.com的错误配置(如密钥路径、主机名写错)。

5. 修正Workflow的参数错误

注意到第二个checkout步骤的名称写错为Check out repo A,建议修正为Check out repo B;同时确认repository参数myorg/b的大小写正确(GitHub Enterprise对仓库名大小写敏感)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:07:40