WSL环境下通过SSH打开的VSCode窗口内置Git扩展无法正常工作
WSL环境VSCode源码管理模块SSH Git操作异常解决方案
解决步骤
方案一(一劳永逸)
- 首先解决自定义密钥识别问题
编辑WSL环境下的~/.ssh/config文件,添加如下配置,替换为你实际的密钥路径:
Host bitbucket.org HostName bitbucket.org User git IdentityFile ~/.ssh/你的自定义密钥文件名 # 用默认id_rsa可省略这行 AddKeysToAgent yes
保存后执行chmod 600 ~/.ssh/config修正文件权限,避免SSH忽略该配置。
- 配置ssh-agent持久化
安装keychain工具统一管理ssh-agent的生命周期,不同发行版安装命令如下:- Debian/Ubuntu系:
sudo apt install keychain - Fedora系:
sudo dnf install keychain - Arch系:
sudo pacman -S keychain
- Debian/Ubuntu系:
之后编辑你当前使用的shell配置文件(Bash对应~/.bashrc,Zsh对应~/.zshrc),在末尾添加:
eval $(keychain --eval --quiet ~/.ssh/你的密钥文件名)
保存后执行source ~/.bashrc(替换为你实际的配置文件路径)生效,重启WSL后仅需在首次打开终端时输入一次密钥密码,全环境所有进程都能调用解锁后的密钥。
- 调整VSCode配置
打开VSCode设置页,搜索git.terminalAuthentication,勾选该选项,让VSCode的Git操作复用终端的认证上下文。
完成以上配置后重启VSCode,重新连接WSL环境即可恢复源码管理模块的Git功能。
方案二(临时验证)
如果不想安装额外工具,可每次打开VSCode连接WSL后,先在内置终端执行ssh-add ~/.ssh/你的密钥文件名,输入密码解锁密钥后,不要关闭该终端,此时再使用源码管理模块的Git操作即可正常运行。
异常原因说明
- 无密码的SSH密钥可正常运行:SSH不需要解锁流程,可直接读取密钥完成认证
- 有密码的默认密钥无响应:VSCode后台调用Git时不具备唤起终端密码输入框的权限,进程卡在等待密码输入的步骤,无输出也不报错
- 有密码的非默认密钥抛出权限错误:SSH默认仅读取
id_rsa等默认名称的密钥,未在SSH配置中指定自定义密钥路径时,无法找到对应密钥完成认证。
内容的提问来源于stack exchange,提问作者jimbasso
相关产品推荐
相关产品推荐

