当前位置: 首页 > ai >正文

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

目录

  • 一、检查网络环境和防火墙设置(失败)
  • 二、尝试使用 GitHub 的备用 SSH 端口 443(成功)
  • 三、检查 SSH Key 是否被正确加载
  • 四、检查是否多个 SSH 进程干扰或者服务异常
  • 五、使用 HTTPS 方式临时解决(非 SSH)
  • 六、参考官方文档和排查日志
  • 七、总结
  • 八、其他尝试过的方法(失败)
    • 1. DNS 解析问题
    • 2. 关闭防火墙以及代理
    • 3. 更新 Git Bash


【问题】:在 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 代理正在运行。

确保在每次打开 Git Bash 时启动 ssh-agent :将以下指令添加到你的 ~/.bashrc 文件中,然后运行 source ~/.bashrc 指令重新加载配置文件。

if [ -f ~/.bash_profile ]; then  . ~/.bash_profile  
fi# Start SSH agent  
eval $(ssh-agent -s)
  • 输入 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 官网】进行下载和更新。

http://www.xdnf.cn/news/2286.html

相关文章:

  • Macos m系列芯片环境下python3安装mysqlclient系列问题
  • 数据需求管理办法有哪些?具体应如何应用?
  • 图神经网络(GNN)基本概念与核心原理
  • 某化工厂运维升级:智和信通运维平台实现工业交换机智能管理
  • Maven 4.0.0 模式-pom.xml配置详解
  • 《AI大模型应知应会100篇》第37篇:Agent框架入门:让AI具备自主行动能力
  • 数字巴别塔:全栈多模态开发框架如何用自然语言重构软件生产关系?
  • Unity 和 Unreal Engine(UE) 两大主流游戏引擎的核心使用方法
  • 回顾|Apache Cloudberry™ (Incubating) Meetup·2025 杭州站
  • MyBatis 类型处理器(TypeHandler)注册与映射机制:JsonListTypeHandler和JsonListTypeHandler注册时机
  • 174页Deepseek大模型在银行系统的部署方案
  • 一、I/O的相关概念
  • Spark RDD行动算子与共享变量实战:从数据聚合到分布式通信
  • 基于SpringBoot+PostgreSQL+ROS Java库机器人数据可视化管理系统
  • 热红外遥感在火情监测中有什么作用?
  • 深入Java JVM常见问题及解决方案
  • Java位运算符大全
  • 亚组风险比分析与可视化
  • OceanBase单机重启和配置修改
  • 再学GPIO(一)
  • 汽车制造行业如何在数字化转型中抓住机遇?
  • springboot不连接数据库启动(原先连接了mysql数据库)
  • 【Redis】Redis Zset实现原理:跳表+哈希表的精妙设计
  • C++初阶-STL简介
  • 怎样给MP3音频重命名?是时候管理下电脑中的音频文件名了
  • FlinkUpsertKafka深度解析
  • 重温TCP通信过程
  • C++ 类与对象(中)—— 默认成员函数与运算符重载的深度解析:构造函数,析构函数,拷贝构造函数,赋值运算符重载,普通取地址重载,const取地址重载
  • 【项目篇之垃圾回收】仿照RabbitMQ模拟实现消息队列
  • HTTP header Cookie 和 Set-Cookie