VSCode连接GitLab时SSH公钥认证失败,请求解决方案
我遇到过不少和你一模一样的场景——命令行、SourceTree都能正常操作Git,唯独VSCode在推拉代码时抛出公钥权限错误。结合你的情况,核心问题基本是VSCode使用的Git环境和你命令行的环境不一致,导致它没加载到正确的SSH密钥。下面给你几个逐步排查的方案,按顺序试应该能解决:
检查VSCode的Git路径是否和命令行一致
有时候VSCode会自带Git,或者默认选了系统里的另一个Git版本,而你命令行用的是Git Bash里的版本,两者的SSH配置不互通。- 打开VSCode的命令面板(快捷键
Ctrl+Shift+P),输入Git: Show Git Output,查看输出里的Git路径(比如会显示Using git from C:\Users\XXX\AppData\Local\Programs\Git\bin)。 - 打开Git Bash输入
where git,得到命令行用的Git路径(比如C:\Program Files\Git\bin\git.exe)。 - 如果两者路径不一样,打开VSCode设置(
Ctrl+,),搜索git.path,把路径改成命令行里的Git路径,保存后重启VSCode。
- 打开VSCode的命令面板(快捷键
强制Git使用自带的SSH客户端
Windows系统自带的OpenSSH和Git自带的SSH有时候会有冲突,导致VSCode里的Git找不到密钥。你可以强制Git用自己的SSH:
打开Git Bash执行:git config --global core.sshCommand "C:/Program Files/Git/usr/bin/ssh.exe"注意把路径换成你实际的Git安装路径,比如如果Git装在
C:\Users\XXX\AppData\Local\Programs\Git,就改成对应的路径。执行完重启VSCode试试。确保SSH密钥已加载到代理
命令行里的ssh-agent可能已经加载了你的密钥,但VSCode的进程没连接到这个代理。你可以手动添加:- 在Git Bash里执行:
如果你的私钥不是默认的ssh-add ~/.ssh/id_rsaid_rsa,换成你的私钥文件名,比如id_ed25519。 - 然后重启VSCode,或者在VSCode的终端(切换成Git Bash)里执行同样的命令,确保密钥被当前会话加载。
- 在Git Bash里执行:
切换VSCode的默认终端为Git Bash
如果VSCode默认用的是PowerShell或Cmd,它们的环境变量和Git Bash不一致,可能导致SSH找不到.ssh目录。
打开VSCode设置,搜索terminal.integrated.defaultProfile.windows,选择Git Bash作为默认终端,重启VSCode后再尝试推拉操作。排查VSCode Git扩展问题
偶尔Git扩展的缓存或版本问题也会导致这种情况:- 打开VSCode的扩展面板,找到
Git扩展,禁用后重新启用。 - 如果还是不行,把VSCode更新到最新版本,或者卸载后重装Git扩展。
- 打开VSCode的扩展面板,找到
最后再确认下VSCode里的远程仓库地址是SSH格式(比如git@gitlab.com:你的用户名/仓库名.git),而不是HTTPS的,避免混淆。
内容的提问来源于stack exchange,提问作者Crispy Holiday




