目录
- 一、检查网络环境和防火墙设置(失败)
- 二、尝试使用 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 官网】进行下载和更新。