现有项目执行npm add安装GitHub私有仓库报publickey权限被拒
问题原因排查思路
首先你已经验证了全局SSH认证本身是正常的(ssh -T git@github.com 执行成功、/opt目录下可正常安装),说明问题只出在/app目录下的局部配置覆盖,优先排查以下几个方向:
高频触发原因
最常见的是/app目录的Git本地配置覆盖了全局SSH规则:
- 如果/app本身是Git工作区,检查
/app/.git/config中是否存在core.sshCommand配置项,或者[url]段的重写规则(比如把SSH地址重写为HTTPS、或者指定了其他SSH密钥路径) - 检查/app目录下是否存在
.gitconfig局部配置文件,覆盖了全局的Git认证规则
你可以直接在/app目录执行npm报错中给出的Git命令,快速验证是否为Git本身的配置问题:
git --no-replace-objects ls-remote ssh://git@github.com/company/repository.git
如果该命令直接报错,就可以确定是Git局部配置的问题,如果该命令执行成功,问题则出在NPM的局部配置。
其他排查步骤
如果上述Git命令执行正常,继续按以下顺序排查:
- 检查/app目录下是否存在
.npmrc项目级配置文件,是否存在以下特殊配置:- 针对
@company作用域的私有镜像源配置,导致仓库地址解析错误 - 配置了Git代理、SSH命令路径等和Git相关的NPM参数
- 针对
- 分别在/app和/opt目录执行
npm config list -l,对比两份配置的差异,重点核对和Git、SSH相关的配置项 - 检查PATH变量是否存在差异:分别在两个目录执行
which git,确认NPM调用的是同一个系统Git二进制,避免/app下node_modules内的第三方Git二进制被优先调用 - 在/app目录执行安装命令时加上
--verbose参数,查看更详细的执行日志,确认NPM调用Git时的环境变量、工作目录是否有异常
内容的提问来源于stack exchange,提问作者Efekan
相关产品推荐
相关产品推荐

