【日常踩坑】解决 kex_exchange_identification 报错

目录

  • 踩坑
  • 原因分析
  • 解决办法
    • [1. 临时关闭代理](#1. 临时关闭代理)
    • [2. 修改代理软件配置,22 端口走直连](#2. 修改代理软件配置,22 端口走直连)
    • [3. 改用 HTTPS 协议,走 443 端口](#3. 改用 HTTPS 协议,走 443 端口)
  • 参考资料

踩坑

最近在使用 git 时,发现 git pull 时经常会出现下面的报错 kex_exchange_identification: Connection closed by remote host,导致无法正常拉取代码

bash 复制代码
$ git pull
kex_exchange_identification: Connection closed by remote host
Connection closed by 192.30.255.113 port 22
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

原因分析

和之前的 解决 pip 安装第三方包时因 SSL 报错 原因类似,都是因为网络代理导致的

主要是代理服务商为了安全考虑,避免被人当作跳板,会主动拒绝 22 端口的连接,导致无法正常连接到 Github 的服务器

解决办法

知道原因之后,解决办法就很简单了,主要有三种

1. 临时关闭代理

虽然关闭代理最简单,但是可能会导致下载速度过慢

2. 修改代理软件配置,22 端口走直连

最安全的办法是修改代理软件的配置,将 22 端口走直连,不同的代理软件配置方式不同,这里就不详细介绍了

3. 改用 HTTPS 协议,走 443 端口

个人最推荐的办法是改用 HTTPS 协议,走 443 端口,因为这样不仅可以解决上面的问题,还可以通过代理提高下载速度

这里主要参考了 Github 官方的教程

~/.ssh/config 文件中添加下面的配置即可,之后就可以正常使用 git pull 等操作了

bash 复制代码
Host github.com
    Hostname ssh.github.com
    Port 443
    User git

参考资料

本文作者: ywang_wnlo
本文链接: https://ywang-wnlo.github.io/posts/a23842fe/
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

相关推荐
Winlifes1 天前
我给 Codex 做了一个 Git 面板:分支树、提交历史和工作区操作
git
aa小小2 天前
Proxy 响应式原理
前端·proxy
郑州光合科技余经理2 天前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
我命由我123452 天前
Git 推送报错:error: src refspec main does not match any
运维·git·gitee·github·运维开发·学习方法·版本控制
Lsetea2 天前
Nginx报No required SSL certificate was sent:mTLS客户端证书排查
运维·nginx·https·ssl·openssl
Lcr3s3 天前
Git基础之(0):如何在Ubuntu(Linux)上安装git
git
玄芯散人3 天前
【筑基·058】Git协作工作流:冲突解决和PR流程
git·版本控制·团队协作
寺中人3 天前
Git 版本控制完全入门指南:从安装到实战,提交 + 分支 + 协作 + 冲突解决全拆解
git·开发工具·版本控制·团队协作·代码管理
荔枝梅梅4 天前
新手程序员 SSH 第一课:从 Git 仓库连接失败理解 SSH 协议与密钥配置
git
玄芯散人4 天前
【筑基·057】Git代码时光机:版本控制入门到分支管理
git·版本控制·嵌入式开发