参考文章:
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******82@qq.com
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,下面给出我当时收到的邮件:
于是我更新了 GitHub 上面的 ssh 公钥,这下 ssh 可以使用了,公钥更新可以参考下面这篇文章:
Git安装配置与使用(超级详细)_git配置-CSDN博客
但是通过 https 进行克隆还是失败,报错还是一样的报错。
我先查看了一下我以前的设置:
git config --global --list
个人当时的配置如下:
user.name=lotuscl
user.email=16******82@qq.com
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******82@qq.com
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,它说:
Git 版本支持问题: 有些 Git 版本对 SOCKS5 代理的支持可能不如 HTTP/HTTPS 代理稳定。确保你使用的是最新版本的 Git,因为新版本通常修复了旧版本中的问题。
网络环境问题: 一些网络环境可能对 SOCKS5 代理有限制,导致无法成功连接。在某些情况下,网络防火墙或代理服务器可能不支持或不允许通过 SOCKS5 进行传输。
代理服务器配置问题: 确保代理服务器已正确配置为支持 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