问题:
-
本地项目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
-
因为开着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
文章来源:https://www.toymoban.com/news/detail-824778.html
2.2 修改openwrt的ShadowsocksR的访问控制配置
- 在访问控制的
不走代理名单
中加入github.com
,保存并应用,这样访问github的操作就与 1 中一样了,缺点也一样
其他
还有其他的不同情况下的解决方案,可以根据实际情况寻找对应的解决办法文章来源地址https://www.toymoban.com/news/detail-824778.html
到了这里,关于Git报错Kex_exchange_identification的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!