前言:今年GitHub的各种操作被屏蔽的挺迷的,一开始我只是以为偶尔报个连接失败的port443的错误,但是后来经常性的出现本地push不上GitHub的情况,在此情况记录一下各种情况(clone、pull、push……)连接不上的解决办法。
一、报错信息与原因分析
报错信息
Git push出(10054)/(port 443:time out)错
git push error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
原因分析
- 由于Http协议错误,当 pull 或者 clone 的时候,或者是 github 某个CDN被qiang屏蔽所致。
- 用了kexueshangwang工具之后,由于更改代理服务器连接端口,导致本地push偶尔失败(但是以前有用)。
二、常规解决方案
2021.06.29更新解决方法:【针对clone失败】https的连接不行,那就用ssh的连接。
2021.07.13更新解决方案:【针对pull、push失败】ssh连接push连接不行,那就用token来push。
常规解决方法:
第一种方法是下面的三条命令,另外如果用了该三条命令还不行,那就ctrl + c ,再进行输入命令,以此往复,总会出现GitHub的登录框的……;
第二种方法就是在本地对host进行更改,让其可以访问github网站的相关ip;
常规解决方案1:改代理
10054的bug复制下面的
git config http.postBuffer 524288000
443的bug复制下面的
# 设置ss
git config --global http.proxy 'socks5://127.0.0.1:10080'
git config --global https.proxy 'socks5://127.0.0.1:10080'
# 设置代理
git config --global https.proxy http://127.0.0.1:10080
git config --global https.proxy https://127.0.0.1:10080
# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
常规解决方案2:改变本地hosts文件
在https://www.ipaddress.com/里面查找下面三个域名的ip地址
- github.com
- github.global.ssl.fastly.net
- codeload.github.com
将其添加到本电脑hosts文件当中
C:\Windows\System32\drivers\etc\hosts
类似下面:
CMD窗口刷新DNS缓存
ipconfig /flushdns
三、针对性解决方案
上面两种方案理论上解决了问题,但是奇葩的问题年年有,上述两种方案都不能解决,就用如下方案:
针对clone失败
如果https连接失败,使用ssh链连接(前提是电脑端配置了ssh),如果ssh连接也不行,那就下面的针对pull、push失败的方案。
针对pull、push失败
ssh连接不行,那就使用token来连接
git push https://一串token@github.com/wztlink1013/datastructure-algorithm
参考
- https://www.cnblogs.com/mmzs/p/12039888.html
- 使用Personal access tokens以避免Windows下每次git push都需要输入账号密码
- 2021年为什么最近github能访问不能push代码了
评论区