You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

VSCode连接GitLab时SSH公钥认证失败,请求解决方案

解决VSCode中Git推送/拉取Permission Denied (publickey)的问题

我遇到过不少和你一模一样的场景——命令行、SourceTree都能正常操作Git,唯独VSCode在推拉代码时抛出公钥权限错误。结合你的情况,核心问题基本是VSCode使用的Git环境和你命令行的环境不一致,导致它没加载到正确的SSH密钥。下面给你几个逐步排查的方案,按顺序试应该能解决:

  • 检查VSCode的Git路径是否和命令行一致
    有时候VSCode会自带Git,或者默认选了系统里的另一个Git版本,而你命令行用的是Git Bash里的版本,两者的SSH配置不互通。

    1. 打开VSCode的命令面板(快捷键Ctrl+Shift+P),输入Git: Show Git Output,查看输出里的Git路径(比如会显示Using git from C:\Users\XXX\AppData\Local\Programs\Git\bin)。
    2. 打开Git Bash输入where git,得到命令行用的Git路径(比如C:\Program Files\Git\bin\git.exe)。
    3. 如果两者路径不一样,打开VSCode设置(Ctrl+,),搜索git.path,把路径改成命令行里的Git路径,保存后重启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的进程没连接到这个代理。你可以手动添加:

    1. 在Git Bash里执行:
      ssh-add ~/.ssh/id_rsa
      
      如果你的私钥不是默认的id_rsa,换成你的私钥文件名,比如id_ed25519
    2. 然后重启VSCode,或者在VSCode的终端(切换成Git Bash)里执行同样的命令,确保密钥被当前会话加载。
  • 切换VSCode的默认终端为Git Bash
    如果VSCode默认用的是PowerShell或Cmd,它们的环境变量和Git Bash不一致,可能导致SSH找不到.ssh目录。
    打开VSCode设置,搜索terminal.integrated.defaultProfile.windows,选择Git Bash作为默认终端,重启VSCode后再尝试推拉操作。

  • 排查VSCode Git扩展问题
    偶尔Git扩展的缓存或版本问题也会导致这种情况:

    1. 打开VSCode的扩展面板,找到Git扩展,禁用后重新启用。
    2. 如果还是不行,把VSCode更新到最新版本,或者卸载后重装Git扩展。

最后再确认下VSCode里的远程仓库地址是SSH格式(比如git@gitlab.com:你的用户名/仓库名.git),而不是HTTPS的,避免混淆。

内容的提问来源于stack exchange,提问作者Crispy Holiday

火山引擎 最新活动