关于Github报SSL_ERROR_SYSCALL的解决方案

477 阅读2分钟

最近在运行RN项目的时候发现,在我pod install命令安装pod包时产生了 SSL_ERROR_SYSCALL 的错误,如下所示。

[!] Error installing CocoaAsyncSocket
[!] /usr/bin/git clone https://github.com/robbiehanson/CocoaAsyncSocket.git /var/folders/v0/2435fl9178sd4r2_1mdgk_r40000gn/T/d20230919-49258-1ot32p3 --template= --single-branch --depth 1 --branch 7.6.5


Cloning into '/var/folders/v0/2435fl9178sd4r2_1mdgk_r40000gn/T/d20230919-49258-1ot32p3'...
fatal: unable to access 'https://github.com/robbiehanson/CocoaAsyncSocket.git/': LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 

下面是一些常见的解决方案:

方案一:重启计算机

众所周知,重启解决 90% 的问题,有时候重启电脑可以直接解决这一问题。

结果: 该方法对我无效。

方案二、修改 Git 网络配置

对于 Git 的网络设置,可以采用以下方式进行修改:

删除 HTTP / HTTPS 代理设置:

可以直接修改全局 Git 配置文件进行修改:

$ vim ~/.gitconfig

删除文件中 HTTP / HTTPS 的相关配置即可

也可以使用命令进行修改:

$ git config --global --unset http.proxy
$ git config --global --unset https.proxy

更改 HTTP / HTTPS 加密库:

由于该问题是 LibreSSL 库报错,可以修改 Git 使用 OpenSSL 库进行 HTTPS 的通信。

$ git config --global http.sslBackend "openssl"

结果: 该方法对我无效。

方案三、修改计算机网络配置

由于使用 IPv6 的原因,可能会导致这一问题的出现。可以配置计算机不使用 IPv6,故使用以下命令:

$ networksetup -setv6off Wi-Fi

如果有需要,可以再将配置修改回来:

$ networksetup -setv6automatic Wi-Fi

不过,上面的方法也没有解决我的问题。

方案四、使用 HTTPS 代理

需要更改本地 Git 的网络配置,以使用代理向 GitHub 发起请求,执行如下命令:

git config --global -e

这将进入 Git 的配置文件编辑界面(将使用 Git 指定的默认编辑器打开,通常是 Vim 或者 Nano)。在该文件中加入如下内容:

[http]
        proxy = socks5://127.0.0.1:7891
[https]
        proxy = socks5://127.0.0.1:7891

注意,将上面的端口修改为自己本地梯子的端口,比如我本地是7890。

方案五、使用 SSH

众所周知 git clone 可以使用 HTTPS 或者 SSH 两种不同的协议来克隆 GitHub 仓库。既然 HTTPS 会收到网络环境的限制,而 SSH 却没有这些限制,我们不妨将本地 Git 和 GitHub 之间的通信协议由 HTTPS 改为 SSH。

进入仓库对应目录,执行如下命令:

$ git remote set-url origin git@github.com:xxx/xxx.git

更改完成后,可以使用如下命令查看当前的 origin 地址:

$ git remote -v

其中,后面的两种方法对我是有效的,如下图,

image.png