image.png

前言:今年GitHub的各种操作被屏蔽的挺迷的,一开始我只是以为偶尔报个连接失败的port443的错误,但是后来经常性的出现本地push不上GitHub的情况,在此情况记录一下各种情况(clone、pull、push……)连接不上的解决办法。

一、报错信息与原因分析

报错信息

  1. Git push出(10054)/(port 443time out)错
  2. git push error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054

原因分析

  1. 由于Http协议错误,当 pull 或者 clone 的时候,或者是 github 某个CDN被qiang屏蔽所致。
  2. 用了kexueshangwang工具之后,由于更改代理服务器连接端口,导致本地push偶尔失败(但是以前有用)。

    二、常规解决方案

    :::success 2021.06.29更新解决方法:【针对clone失败】https的连接不行,那就用ssh的连接。
    2021.07.13更新解决方案:【针对pull、push失败】ssh连接push连接不行,那就用token来push。 :::

:::success 常规解决方法:
第一种方法是下面的三条命令,另外如果用了该三条命令还不行,那就ctrl + c ,再进行输入命令,以此往复,总会出现GitHub的登录框的……;
第二种方法就是在本地对host进行更改,让其可以访问github网站的相关ip; :::

常规解决方案1:改代理

10054的bug复制下面的

  1. git config http.postBuffer 524288000

443的bug复制下面的

  1. # 设置ss
  2. git config --global http.proxy 'socks5://127.0.0.1:10080'
  3. git config --global https.proxy 'socks5://127.0.0.1:10080'
  4. # 设置代理
  5. git config --global https.proxy http://127.0.0.1:10080
  6. git config --global https.proxy https://127.0.0.1:10080
  7. # 取消代理
  8. git config --global --unset http.proxy
  9. 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
类似下面:
image.png
CMD窗口刷新DNS缓存

  1. ipconfig /flushdns

三、针对性解决方案

上面两种方案理论上解决了问题,但是奇葩的问题年年有,上述两种方案都不能解决,就用如下方案:

针对clone失败

如果https连接失败,使用ssh链连接(前提是电脑端配置了ssh),如果ssh连接也不行,那就下面的针对pull、push失败的方案。
image.png

针对pull、push失败

ssh连接不行,那就使用token来连接

  1. git push https://一串token@github.com/wztlink1013/datastructure-algorithm

参考