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

GitHub Action执行npm ci时报git@github.com公钥权限错误如何解决

GitHub Action 运行 npm ci 报 publickey 权限错误的排查与解决方法

这个报错的核心原因是:你的项目npm依赖中存在通过SSH协议引用的GitHub私有仓库包,GitHub Action的默认运行环境没有配置对应私有仓库的访问SSH密钥,导致拉取依赖时权限校验失败,返回128错误码。

排查步骤

  • 检查项目根目录下的package.json、package-lock.json(或npm-shrinkwrap.json)文件,确认是否有依赖项的仓库地址为ssh://git@github.com/[用户名]/[仓库名].git格式的私有仓库地址
  • 确认你对该私有仓库有管理权限,可配置访问凭证

解决方案

方案1:改为HTTPS协议拉取依赖(无需配置密钥,操作最简单)

将私有依赖的仓库地址从SSH格式修改为HTTPS格式,示例如下:
原SSH格式:git@github.com:myorg/my-private-pkg.git#v1.2.0
修改后HTTPS格式:https://github.com/myorg/my-private-pkg.git#v1.2.0

如果是同账号/同组织下的私有仓库,只需要在Action配置的顶部添加内置Token的读取权限即可:

permissions:
  contents: read

如果是跨账号/跨组织的私有仓库,生成一个有对应仓库读取权限的个人访问令牌(PAT),将PAT存储到仓库Secrets中,不要明文写在配置里即可。

方案2:配置SSH密钥到Action运行环境

如果必须使用SSH协议拉取依赖,按以下步骤操作:

  • 生成一对新的SSH密钥,将公钥添加到对应私有仓库的「Deploy keys」配置中,仅勾选只读权限即可
  • 将私钥内容存储到当前运行Action的仓库的「Secrets」配置中,自定义命名为PRIVATE_SSH_KEY
  • 在Action配置中,执行npm ci之前添加SSH密钥加载步骤,示例配置:
- name: 加载私有仓库访问SSH密钥
  uses: webfactory/ssh-agent@v0.8.0
  with:
    ssh-private-key: ${{ secrets.PRIVATE_SSH_KEY }}

方案3:全局替换Git协议规则(无需修改依赖配置)

如果不想改动项目中的依赖地址,可以在Action中添加Git全局配置,自动将所有GitHub的SSH请求替换为HTTPS请求,示例配置:

- name: 全局替换GitHub SSH请求为HTTPS
  run: git config --global url."https://github.com/".insteadOf git@github.com:

如果需要用PAT访问私有仓库,修改命令为:

- name: 全局替换GitHub SSH请求为带凭证的HTTPS
  run: git config --global url."https://${{ secrets.MY_PAT }}@github.com/".insteadOf git@github.com:

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:45:00