GitHub Actions安装私有GitHub依赖时报Git 128错误如何解决
GitHub Actions npm install拉取私有SSH依赖报128错误的最佳解决方案
该错误本质是GitHub Actions运行环境没有访问你账号下私有仓库
REPONAME的权限,你在package.json中配置的依赖走SSH协议拉取时鉴权失败。
以下是安全性最高、配置最简便的解决方案,不需要修改现有依赖配置,也不需要管理SSH密钥:
操作步骤
- 生成细粒度个人访问令牌(PAT)
- 进入GitHub账号的【设置】-【开发者设置】-【个人访问令牌】-【细粒度令牌】,点击新建令牌
- 令牌的资源所有者选择你的账号,仓库权限仅勾选需要访问的私有仓库
REPONAME - 仓库权限的
Contents选项设置为只读,按需设置令牌有效期后保存,复制生成的令牌值(只会显示一次,需妥善保存)
- 将令牌存入当前项目仓库的Secrets
- 进入当前运行工作流的项目仓库,依次点击【Settings】-【Secrets and variables】-【Actions】
- 点击【New repository secret】,命名为
PRIVATE_REPO_PAT,值粘贴刚才生成的PAT后保存
- 修改工作流配置,添加git重定向规则
在你的工作流的npm install步骤之前,添加一步git配置,自动将SSH的GitHub地址替换为带PAT的HTTPS地址,修改后的steps部分示例如下:
steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} cache: "npm" # 新增的配置步骤 - name: 配置私有依赖访问权限 run: git config --global url."https://${{ secrets.PRIVATE_REPO_PAT }}@github.com/".insteadOf "ssh://git@github.com/" - run: echo "Testing App." - run: npm install # 后续原有步骤保持不变
方案说明
- 这个配置会让所有向
ssh://git@github.com/发起的git请求自动走带鉴权信息的HTTPS协议,npm拉取依赖时会自动鉴权,完全不需要修改你package.json里的原有依赖配置 - 细粒度PAT可以精确控制权限范围、有效期,相比SSH密钥泄露风险更低,管理更方便
- 不要直接使用GitHub自动生成的
GITHUB_TOKEN,这个令牌默认只有当前仓库的访问权限,无法拉取其他私有仓库的内容
内容的提问来源于stack exchange,提问作者lsc
相关产品推荐
相关产品推荐

