You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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(推荐,一次配置所有场景通用)
    1. 管理员身份打开PowerShell,执行以下命令设置ssh-agent服务开机自启并立即运行:
      Get-Service ssh-agent | Set-Service -StartupType Automatic
      Start-Service ssh-agent
      
    2. 执行命令将本地RSA私钥加入ssh-agent托管,按提示输入一次私钥的密码短语即可:
      ssh-add $env:USERPROFILE/.ssh/id_rsa
      
    3. 重启VSCode后再使用内置克隆功能,即可正常完成公钥认证拉取仓库。
  • 方案二:指定Git使用Windows系统自带的OpenSSH客户端
    1. 打开Windows系统环境变量配置面板,新增系统环境变量GIT_SSH,变量值填写系统OpenSSH的路径:C:\Windows\System32\OpenSSH\ssh.exe
    2. 保存配置后重启所有终端和VSCode,后续Git所有SSH相关操作都会调用系统OpenSSH客户端,可正常触发密码输入或复用ssh-agent的密钥。
  • 方案三:开启VSCode Git的内置密码询问功能
    1. 编辑本地SSH配置文件(路径为C:\Users\你的用户名\.ssh\config),为目标Git主机添加明确的密钥配置:
      Host 192.168.1.18
        HostName 192.168.1.18
        User gituser
        IdentityFile ~/.ssh/id_rsa
        IdentitiesOnly yes
      
    2. 打开VSCode设置面板,搜索git.useIntegratedAskPass选项并勾选,后续Git操作需要输入密码短语时,会在内置终端中弹出输入提示,不会再直接静默报错。

内容的提问来源于stack exchange,提问作者J.P. Duvet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 12:15:39