Git报错Kex_exchange_identification

问题:

  • 本地项目push到github失败

    Push failed
    Kex_exchange_identification: Connection closed by remote hostConnection closed by 20.205.243.166 port 22
    Could not read from remote repository.
    Please make sure you have the correct access rightsand the repository exists.

  • 同样地,从github中clone、pull、fetch也报上述错误

解决方法

  • 一般情况下是以上错误都是因为挂着VPN导致端口冲突

  • 目前遇到两类情况,解决办法如下。

1 网络本身无vpn,使用ShadowsocksR等工具科学上网
  • 退出ShadowsocksR即可
  • 缺点:访问github会变慢,毕竟把vpn关掉了。如果开vpn本身就是为了更快速的访问github,那这样的操作就很费劲,每次和远程仓库交互都要关掉vpn,搞完再打开,推荐2.1。
2 网络本身挂载vpn,如openwrt上安装了ShadowsocksR
  • 解决办法有两种(推荐第一种)
2.1 修改项目目录中隐藏文件夹 .git 内的 config 文件
  • 将 Project/.git/config 文件中ssh格式的url,修改为github仓库中https格式的url。如:

    url = https://github.com/username/SpringBootWebTest.git

    image-20220921101237310

  • 因为开着vpn,代理端口走22;同时git的ssh一般也使用22端口,这样造成冲突;而git的https一般使用443端口,不会产生冲突。

  • 一般企业防火墙会打开80和443这两个http/https协议的端口,因此在架设了企业防火墙的时候使用https可以很好地绕开安全限制使用git;但是对于ssh来说,企业防火墙很可能没打开22端口。

  • 如果按以上操作修改之后报错Invocation failed Server returned invalid Response.,则到IDEA等软件的配置界面,选中 Use credential helper 即可,参考。路径如下:

    File -> Settings -> Version Control -> Git-> Use credential helper

    image-20220921102253464

2.2 修改openwrt的ShadowsocksR的访问控制配置
  • 在访问控制的不走代理名单中加入 github.com ,保存并应用,这样访问github的操作就与 1 中一样了,缺点也一样

其他

还有其他的不同情况下的解决方案,可以根据实际情况寻找对应的解决办法

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值