Git Bash 下使用 SSH 连接出现 “Software caused connection abort” 问题


【问题】:在 Git Bash 上输入 ssh -T git@github.com 出现下图所示错误。

kex_exchange_identification: read: Software caused connection abort
banner exchange: Connection to 20.205.243.166 port 22: Software caused connection abort

【分析】:

这个错误,通常是 SSH 连接被远程服务器拒绝或本地网络环境干扰导致的。针对 Windows 11 中 Git Bash 连接 GitHub SSH 的问题,可以尝试以下几个排查和解决方案:

一、检查网络环境和防火墙设置(失败)

  • 确认本机或局域网没有阻挡或限制 22 端口的出站连接。公司或校园网络、路由器防火墙、杀毒软件都有可能屏蔽 SSH 端口。

  • 打开 Anaconda Powershell Prompt ,尝试用命令 Test-NetConnection github.com -Port 22 测试 22 端口连通性。

  • 连接成功时的典型输出示例如下所示。关键字段是:TcpTestSucceeded ,若为 True 表示 TCP 端口 22 连接成功。
ComputerName     : github.com  
RemoteAddress    : 20.205.243.166   # 具体 IP 可能不同  
RemotePort       : 22  
InterfaceAlias   : WLAN  
SourceAddress    : 192.168.31.66  
TcpTestSucceeded : True  
  • 为 False 表示连接失败,说明网络被阻断,会显示错误信息。

可以根据这个结果判断本机网络环境是否允许访问 GitHub 的 SSH 端口。

二、尝试使用 GitHub 的备用 SSH 端口 443(成功)

因为部分网络限制了 22 端口,可以配置 SSH 连接使用 443 端口:

  • 编辑或者新建配置文件:nano ~/.ssh/config

  • 在文件内添加下面内容:

Host github.com  
  Hostname ssh.github.com  
  Port 443

Nano 编辑器保存与退出:编辑完后使用 Ctrl + X 快捷键退出,会弹出 “Save modified buffer?” ,输入 “y” ,最后按一下 Enter 键即可退出。

  • 保存后退出,再次用命令 ssh -T git@github.com 测试 SSH 连接,遇到中断时输入 “yes” 即可。

参考文章:【【日常踩坑】解决 kex_exchange_identification 报错

三、检查 SSH Key 是否被正确加载

  • 启动 SSH 代理:在 Git Bash 上运行 eval $(ssh-agent -s) 命令启动 SSH 代理,这将返回一个类似于 “Agent pid xxx” 的消息,表示 SSH 代理正在运行。

  • 输入 ssh-add -l 命令,如果出现 “The agent has no identities.” 说明没有加载私钥。

  • 加载私钥:在 Git Bash 上运行 ssh-add ~/.ssh/id_rsa 命令将你的 SSH 密钥添加到代理中。

注:需要根据你的密钥所处路径以及密钥文件名对上述命令做相应调整。

  • 验证 SSH 密钥:在添加密钥后,可以再次使用 ssh-add -l 验证是否成功添加,如果成功,会看到已添加的密钥列表,类似于 “xxx SHA256:… [你的邮箱] (RSA)” 。

  • 再次用命令 ssh -T git@github.com 测试 SSH 连接。

四、检查是否多个 SSH 进程干扰或者服务异常

  • 关闭所有 Git Bash 终端,重新打开,再尝试。

  • 重启电脑,排除暂时网络或端口占用导致异常。

五、使用 HTTPS 方式临时解决(非 SSH)

如果一直连不上 SSH ,可以用 HTTPS 方式访问 GitHub :

git clone https://github.com/用户名/仓库名.git  

推送时会要求输入用户名和 Personal Access Token(代替密码)。

六、参考官方文档和排查日志

查看 ~/.ssh 中的日志(如果有配置 debug 参数):

ssh -vT git@github.com

会输出详细调试信息,有助于精准定位问题。

七、总结

  • 最常见原因是网络防火墙阻止 SSH 端口 22 连接,可以尝试使用端口 443 。

  • 确保私钥加载正常。

  • 检查防病毒或安全软件是否拦截。

八、其他尝试过的方法(失败)

1. DNS 解析问题

打开 cmd 输入 ping 命令查看 github.com 是否可以连接:ping github.com ,如果请求超时则需要配置本地 hosts 文件。

打开文件地址:C:\Windows\System32\drivers\etc\hosts ,在此文件末尾加上以下内容:

192.30.255.112 github.com git 
185.31.16.184 github.global.ssl.fastly.net

再次在 Git Bash 上使用命令 ssh -T git@github.com 测试 SSH 连接。

参考文章:
【GIT】远程GitHub时不成功,报错信息:ssh_dispatch_run_fatal: Connection to 13.229.188.59 port 22: Software caused
Git - 解决Github连接失败的问题

2. 关闭防火墙以及代理

“软件导致连接中止” 就是指:你的系统上有一些软件导致了连接中止。这可能是防火墙、杀毒软件、代理、监控软件或者其他类似的软件。这不是 GitHub 的问题,GitHub 无法解决这个问题。

Git 开发人员建议在 Windows 上仅使用默认的杀毒软件和防火墙(即 Windows Defender 和 Windows Firewall),不要使用其他任何代理。如果您的计算机上安装了此类软件(除了默认的杀毒软件和防火墙),您应该卸载它并重新启动,问题很可能会消失。 请注意,我们无法确定是哪个软件导致了这个问题,只知道是您的计算机上的某个软件。

3. 更新 Git Bash

确保你使用的是最新版本的 Git Bash ,旧版本可能会存在某些已知的问题,你可以访问【Git 官网】进行下载和更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kusunoki_D

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值