问题:

本地项目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

2.2 修改openwrt的ShadowsocksR的访问控制配置

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

其他

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

参考文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: