1. 问题现象与初步排查
当你在Windows系统上使用TortoiseGit进行Git操作时,可能会遇到"Network error: Connection refused"的错误提示。这个错误通常出现在尝试连接远程Git仓库(如GitHub、GitLab或私有Git服务器)时。有趣的是,当你直接在命令行中执行ssh -T git@github.com测试连接时,却能得到成功的响应。
这种矛盾现象表明:SSH协议本身和网络连接是正常的,问题出在TortoiseGit的特定配置上。作为一名长期使用Git的开发人员,我经常遇到团队成员被这个问题困扰。下面我将详细解析这个问题的成因和解决方案。
提示:在开始排查前,请确保你已经正确生成了SSH密钥对,并将公钥添加到了Git服务器。这是所有SSH连接的前提条件。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 问题根源分析
2.1 SSH客户端的选择差异
Windows环境下存在多个SSH客户端实现,这是问题的核心所在:
- OpenSSH:Git for Windows自带的SSH客户端,路径通常为
C:\Program Files\Git\usr\bin\ssh.exe - TortoiseGitPlink:TortoiseGit默认捆绑的SSH客户端,基于PuTTY的实现
- Windows内置OpenSSH:Windows 10+自带的SSH客户端(如果启用)
当你使用命令行测试SSH连接时,很可能是使用了Git自带的OpenSSH客户端。而TortoiseGit默认使用自己的TortoiseGitPlink.exe,这就导致了行为不一致。
2.2 密钥管理的差异
不同SSH客户端管理密钥的方式也不同:
| 客户端类型 | 密钥存储位置 | 密钥格式 | 自动加载机制 |
|---|---|---|---|
| OpenSSH | ~/.ssh/ | PEM格式 | 自动加载id_rsa等默认密钥 |
| TortoiseGitPlink | Pageant或单独配置 | PPK格式 | 需要手动加载或指定 |
这种差异意味着:即使你在命令行可以成功连接,TortoiseGit可能因为找不到
