Git Bash执行code .与右键打开VS Code的npm命令权限问题排查
问题描述
我有一个项目,package.json和package-lock.json中包含Git仓库依赖。通过Git Bash执行code .打开项目后,npm update my-git-repository和npm install my-git-repository命令可正常运行;但右键点击文件夹选择“Open with Code”打开项目后,执行相同命令会出现如下错误:
npm ERR! Error while executing: npm ERR! C:\Program Files\Git\cmd\git.EXE ls-remote -h -t git-url-to-my-repository npm ERR! npm ERR! git@git: Permission denied (publickey). npm ERR! fatal: Could not read from remote repository. npm ERR! npm ERR! Please make sure you have the correct access rights npm ERR! and the repository exists. npm ERR! npm ERR! exited with error code: 128
Visual Studio Code和Git均安装在C:\Program Files目录下,package.json中相关依赖配置如下:
"dependencies": { "my-git-repository": "git+ssh://git@git:7999/{repo}/my-git-repository.git", "dotenv": "^10.0.0", "express": "^4.17.1", .... }
问题原因与解决办法
核心原因
两种启动VS Code的方式使用了不同的环境:
- 通过Git Bash执行
code .时,VS Code继承了Git Bash的环境变量,包括SSH代理状态、密钥路径配置,Git能正常读取SSH密钥完成仓库认证。 - 右键“Open with Code”启动的VS Code,使用的是Windows系统默认的shell环境(cmd/PowerShell),该环境未加载Git Bash的SSH配置,导致Git无法找到用于认证的SSH私钥,从而触发权限拒绝错误。
解决办法
方法1:让VS Code默认使用Git Bash终端
修改VS Code的默认终端为Git Bash,确保终端环境继承Git的SSH配置:
- 打开VS Code,按下
Ctrl+,打开设置面板。 - 搜索
terminal.integrated.defaultProfile.windows,将其值设置为Git Bash。 - 重启VS Code后,新打开的终端会使用Git Bash,此时再执行npm命令即可正常访问Git仓库。
方法2:配置Windows系统级SSH代理
将SSH密钥添加到Windows的SSH代理中,让所有环境都能访问到密钥:
- 打开Git Bash,执行以下命令启动SSH代理:
eval $(ssh-agent -s) - 将你的SSH私钥添加到代理中(假设密钥文件为
id_rsa,如果是其他名称请替换):ssh-add ~/.ssh/id_rsa - 若想每次开机自动加载,可将上述两行命令添加到Git Bash的
~/.bashrc文件,同时创建Windows任务计划,开机时启动Git Bash并执行该脚本。
方法3:改用HTTPS协议访问仓库(若仓库支持)
如果Git仓库允许HTTPS访问,可修改package.json中的依赖地址为HTTPS格式,避免SSH密钥认证问题:
"dependencies": { "my-git-repository": "git+https://git@git:7999/{repo}/my-git-repository.git", // 其他依赖... }
修改后执行npm install或npm update时,可通过账号密码或Windows凭证管理器完成认证。
内容的提问来源于stack exchange,提问作者python_is_my_snake
相关产品推荐
相关产品推荐

