Windows 10下Git for Windows无法通过PuTTY/Pageant做SSH认证如何排查
解决方案
1. 修复环境变量不生效问题
你遇到的cmd中GIT_SSH正常、Git Bash中为空的问题,是环境变量修改后未同步到所有进程导致:
- 修改系统级
GIT_SSH变量后,必须重启Windows资源管理器或直接重启设备,所有已启动的进程才会读取到新的环境变量配置 - 如果你配置的是用户级环境变量,需确认运行Git、GitExtensions的账号和配置变量的账号一致,不要混用管理员/普通账号启动程序
2. 强制Git使用plink作为SSH客户端
新版本Git for Windows默认优先使用内置OpenSSH客户端,会忽略GIT_SSH变量,需手动指定SSH客户端:
打开Git Bash执行命令:
git config --global core.sshCommand "'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe'"
注意路径内外的双层引号不可省略,确保带空格的路径可被正确识别。
3. 验证plink与Pageant连通性
先确认Pageant已正常运行,且对应私钥已加载到Pageant中,打开cmd执行以下测试命令:
"C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe" -T git@gitlab.example.com
- 如果返回GitLab欢迎信息,说明认证正常
- 如果仍要求输入密码,优先排查两个问题:
- 对应公钥是否已正确添加到GitLab账号的SSH密钥列表中
- 此前未用PuTTY连接过gitlab.example.com:plink第一次连接新站点会弹出主机密钥确认弹窗,后台运行的Git无法处理该交互就会报错,你需要手动打开PuTTY连接一次gitlab.example.com,选择接受主机密钥并保存站点配置即可。
4. 修正GitExtensions配置
打开GitExtensions设置页,找到「SSH」配置项:
- SSH客户端选择
PuTTY,不要选择OpenSSH - 确认plink.exe路径和你
GIT_SSH变量配置的路径完全一致 - 勾选「Use Pageant」选项
配置完成后重启GitExtensions再执行克隆操作即可。
5. 协议错误说明
你遇到的fatal: protocol error: bad line length character: git@报错,是因为SSH客户端返回了密码输入的交互提示,Git将文本内容当成SSH协议内容解析抛出的格式错误,解决SSH认证问题后该报错会自动消失。
内容的提问来源于stack exchange,提问作者masiton
相关产品推荐
相关产品推荐

