VSCode SSH克隆Git仓库失败 命令行Git操作可正常执行
问题根因
这个问题的核心是不同场景下SSH客户端的认证交互逻辑不一致:
- 系统命令提示符执行
git clone时,调用的是系统默认配置的SSH客户端,会直接触发当前终端的密码短语输入提示,如果你之前已经把密钥加入ssh-agent,还能直接复用已解锁的密钥完成认证。 - VSCode Remote-SSH扩展自带独立的SSH交互逻辑,专门实现了密码短语弹窗组件,连接时可以正常弹出输入框收集中间认证信息。
- VSCode内置的「Clone Git Repository」功能默认调用Git for Windows打包的内置SSH客户端,这个客户端既没有对接VSCode的图形化输入弹窗,也不会主动读取系统ssh-agent中已解锁的密钥,导致公钥认证阶段因为无法获取解密后的私钥直接中断,回退到密码认证后又因为没有合法密码最终认证失败。
从服务端sshd日志可以验证这个判断:公钥认证流程停在Postponed publickey阶段,没有进入后续的密钥校验环节,之后连续两次密码认证失败直接断开连接,全程没有触发私钥密码短语的输入流程。
解决方案
按照操作成本从低到高选择即可:
- 方案一:将私钥托管到Windows自带的ssh-agent(推荐,一次配置所有场景通用)
- 管理员身份打开PowerShell,执行以下命令设置ssh-agent服务开机自启并立即运行:
Get-Service ssh-agent | Set-Service -StartupType Automatic Start-Service ssh-agent - 执行命令将本地RSA私钥加入ssh-agent托管,按提示输入一次私钥的密码短语即可:
ssh-add $env:USERPROFILE/.ssh/id_rsa - 重启VSCode后再使用内置克隆功能,即可正常完成公钥认证拉取仓库。
- 管理员身份打开PowerShell,执行以下命令设置ssh-agent服务开机自启并立即运行:
- 方案二:指定Git使用Windows系统自带的OpenSSH客户端
- 打开Windows系统环境变量配置面板,新增系统环境变量
GIT_SSH,变量值填写系统OpenSSH的路径:C:\Windows\System32\OpenSSH\ssh.exe - 保存配置后重启所有终端和VSCode,后续Git所有SSH相关操作都会调用系统OpenSSH客户端,可正常触发密码输入或复用ssh-agent的密钥。
- 打开Windows系统环境变量配置面板,新增系统环境变量
- 方案三:开启VSCode Git的内置密码询问功能
- 编辑本地SSH配置文件(路径为
C:\Users\你的用户名\.ssh\config),为目标Git主机添加明确的密钥配置:Host 192.168.1.18 HostName 192.168.1.18 User gituser IdentityFile ~/.ssh/id_rsa IdentitiesOnly yes - 打开VSCode设置面板,搜索
git.useIntegratedAskPass选项并勾选,后续Git操作需要输入密码短语时,会在内置终端中弹出输入提示,不会再直接静默报错。
- 编辑本地SSH配置文件(路径为
内容的提问来源于stack exchange,提问作者J.P. Duvet
相关产品推荐
相关产品推荐

