npm ci执行时GitHub SSH地址需输入凭证问题求助
以下是针对Windows环境的可行解决步骤:
强制npm对GitHub仓库使用SSH协议
执行命令让npm默认用SSH访问GitHub,避免自动切换到HTTPS:npm config set git@github.com:ssh://git@github.com
如果私有包带有scope(如@knowyrtech/actions_param),可以针对性设置:npm config set @knowyrtech:registry git+ssh://git@github.com/knowyrtech确保SSH代理在npm执行环境中生效
Windows下需确认ssh-agent处于运行状态且已加载密钥,在执行npm ci前先运行:eval $(ssh-agent -s) ssh-add ~/.ssh/id_rsa注意:如果你的SSH密钥不是默认的
id_rsa,替换成实际的密钥文件名。验证package.json中的依赖地址格式
检查依赖项里的私有包地址是否为正确的SSH格式,示例如下:"dependencies": { "actions_param": "git+ssh://git@github.com/knowyrtech/actions_param.git" }避免误写为HTTPS格式或遗漏
git+ssh://前缀。清理npm缓存并检查认证配置
清理可能残留的错误缓存:npm cache clean --force
同时检查npm是否配置了GitHub的HTTPS仓库地址,执行:npm config get @github.com:registry
若返回https://github.com/,执行以下命令修改为SSH格式:npm config set @github.com:registry ssh://git@github.com配置GIT_SSH环境变量
确保npm使用Git自带的SSH客户端而非系统默认SSH,在Git Bash中执行which ssh获取路径(通常为C:\Program Files\Git\usr\bin\ssh.exe),然后设置环境变量:set GIT_SSH=C:\Program Files\Git\usr\bin\ssh.exe
也可以通过系统属性-环境变量面板添加该全局变量,避免每次手动设置。
内容的提问来源于stack exchange,提问作者Ashar

