记录Git无法连接Github(443报错)的一种可能——代理问题

参考文章:

Git安装配置与使用(超级详细)_git配置-CSDN博客

github代理报错_valueerror: unable to determine socks version from-CSDN博客   

速通

如果在使用 git 时遇到了这样的报错:

OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443

那就证明你网络有问题,问题可以通过设置代理等方式进行解决。如果已经有代理了,请在 Git Bash 中运行如下代码查看自己的配置:

git config --global -l

观察自己的 git 代理设置中使用的是什么协议,如下方情况使用的是 Socks5。

user.name=lotuscl
user.email=16******[email protected]
credential.https://gitee.com.provider=generic
http.https://github.com.proxy=socks5://127.0.0.1:7890

 可以尝试更换代理协议为 http 协议,运行如下代码:

git config --global http.https://github.com.proxy http://127.0.0.1:7890
git config --global https.https://github.com.proxy https://127.0.0.1:7890

同理,如果本来就是使用 http 协议进行代理的,可以更换 Socks5。 

git config --global http.https://github.com.proxy socks5://127.0.0.1:7890

 

问题分析过程

隔了一段时间,我发现使用 git 克隆全部失败了,不论是通过 ssh 还是 https,报错全部为:

OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443

我想了半天,怀疑是之前 github 更新的时候“强制”要求设置两步验证,导致了我无法连接 git,下面给出我当时收到的邮件:

记录Git无法连接Github(443报错)的一种可能——代理问题_第1张图片

于是我更新了 GitHub 上面的 ssh 公钥,这下 ssh 可以使用了,公钥更新可以参考下面这篇文章:

Git安装配置与使用(超级详细)_git配置-CSDN博客

但是通过 https 进行克隆还是失败,报错还是一样的报错。

我先查看了一下我以前的设置:

git config --global --list

个人当时的配置如下:

user.name=lotuscl
user.email=16******[email protected]
credential.https://gitee.com.provider=generic
http.https://github.com.proxy=socks5://127.0.0.1:7890

可以看到我之前是设置了对 github 使用 http 协议访问的时候进行代理,并且还是用的 Socks5 协议。我就奇了怪了,之前不是一直都可以吗?怎么这回给我弹报错?

然后我翻了翻其他的文章,看到有人设置代理走的是 HTTP 协议,于是就怀疑到网络代理协议上了。我重新修改了一下规则,使用 HTTP 替换 Socks5,运行了这样的命令,并顺带加上了 https:

git config --global http.https://github.com.proxy http://127.0.0.1:7890
git config --global https.https://github.com.proxy https://127.0.0.1:7890

最终的配置如下:

user.name=lotuscl
user.email=16******[email protected]
credential.https://gitee.com.provider=generic
http.https://github.com.proxy=http://127.0.0.1:7890
https.https://github.com.proxy=https://127.0.0.1:7890

结果再次使用 https 进行克隆的时候这回就 ok 了,并且修改回原来的 Socks5(不删除 https 代理)确实是无法克隆的。但是为什么呢?我问了一嘴 gpt,它说:

  1. Git 版本支持问题: 有些 Git 版本对 SOCKS5 代理的支持可能不如 HTTP/HTTPS 代理稳定。确保你使用的是最新版本的 Git,因为新版本通常修复了旧版本中的问题。

  2. 网络环境问题: 一些网络环境可能对 SOCKS5 代理有限制,导致无法成功连接。在某些情况下,网络防火墙或代理服务器可能不支持或不允许通过 SOCKS5 进行传输。

  3. 代理服务器配置问题: 确保代理服务器已正确配置为支持 SOCKS5 协议,且端口号和地址是正确的。

Git 版本贼新,我默认它应该是没问题的。然后我怀疑是网络环境问题,是不是哪次更新把我 clash 的 Socks5 给 ban 了,但是查了相关的资料好像又没看出个所以然,这下真暴露我的计网知识的匮乏了(悲)

然后我只能去调查一下是不是代理服务器的问题。这下惨了,春节期间客服没上班问不了,我就改用 v2rayN 使用了另一组代理服务器。v2rayN 的监听端口是 10808,于是运行下面的命令:

git config --global http.https://github.com.proxy socks5://127.0.0.1:10808

嘿您猜怎么着,居然克隆成功了!难不成还真是代理服务器的问题?出问题的范围缩小至 clash 和我使用的代理服务器上了。

还好我之前买过另外一组的服务器(人傻钱  少),我就换了另一组,并且还是使用 clash 进行代理。结果居然还真是代理服务器的问题,更换服务器组后成功克隆。

 

结论:

可恶的无良商家!!!!另外,本人的计网学得挺差的,文章很多用词不规范不准确,理解也可能有问题,欢迎大佬指出错误 orz

你可能感兴趣的:(杂项,git,github)