SSL_ERROR_SYSCALL in connection to github.com:443的解决

  • 记一次 pod 安装三方库报SSL_ERROR_SYSCALL in connection to github.com:443错误的解决

问题

2021 6 月接手了一个 Flutter 开发的新项目,在 clone 完项目之后,首次运行提示我需要先要执行 pod install ,于是我在终端执行了 pod install,等了好久结果报SSL_ERROR_SYSCALL in connection to github.com:443的错误,我重新执行了pod install --verbose, 发现pod在安装PromiseKit的时候报的错误,于是我在网上开始查找解决方案,噩梦就此开始....

尝试解决

百度

我将SSL_ERROR_SYSCALL in connection to github.com:443的错误复制到百度搜索,出来了好多结果,我选了几个感觉比较靠谱的去尝试,大致归为以下几种解决方案:

    1. 如果开启了代理上网,把代理上网关闭,然后终端执行
git config --global --unset http.proxy
git config --global --unset https.proxy

然后再次尝试 pod install

    1. 打开代理上网,并在.gitconfig配置httphttps的代理
      打开网络偏好设置->高级->代理, 查看本机socks代理的端口号,
      [http "[https://github.com](https://github.com)"] proxy = socks5://127.0.0.1:本机 socks 代理端口号
      保存,关闭,再次尝试 pod install
    1. .gitconfig 修改 git的缓存
      git config --global http.postBuffer 4194304000
      然后再次尝试

以上三种都是对.gitconfig 文件中的脚本进行修改,需要注意的是文件中的格式一定要正确,注意文本的对齐方式,要与之前的保持一致

google

  • google上搜索出来的结果不多无非也是以上几种

gem ruby cocoapods 上的操作

  • 查看了 pod的源, 然后按照网上的修改后,再尝试不行
  • 更新pod 版本到 1.10.1,然后再尝试还是不行
  • 更新 gem再尝试还是不行
  • ruby 版本由 2.6.0 升级到 2.7.3 还是不行
  • 更新 xcode 到 12.3 还是不行
  • 重新设置命令行,还是不行
  • 删除之前安装的 cocoapods重新安装还是不行

网络

  • 看到网上有人说需要多试几次,有可能网络不行,多试几次有可能成功,我尝试了 N 多次 还是不行
  • 使用公司网还是家里的网络都不行
  • 不论是白天还是深夜都不行
  • 使用手机热点网络还是不行

其他

  • 中间关机重启了 N 次也不行
  • 升级系统到最新也不行
  • 我注意到在 pod install 的时候每次都是在安装 promiseKit的时候报这个错误,原因是promiseKit有好多 submodule,在 git clone这些 submodule的时候就会有不固定的一部分submoduleclone 的时候报出SSL_ERROR_SYSCALL in connection to github.com:443的问题,于是我想手动把这些 submodule clone 下来然后放进去,结果还是不行

.gitconfig 配置

  • 对比了两位同事的 gitconfig 文件的配置,除了代理和用户信息外感觉其他没什么区别

经过了上面的各种尝试,我能想到还可以尝试的方法就是重装系统了,由于重装系统及配置相关环境和文件 copy 时间比较久,这种方法我暂时没实施

解决

在我等待合适时机重装系统的时候,转机出现了,有另外一位同事也加入了这个项目的开发,他也遇到了同样的问题,他尝试了一番后也是不行,我建议他重装系统尝试一下,然后他重装了系统,配置了相关环境之后竟然成功了。他的另一台电脑依旧不行,然后他对比了两台电脑的 .gitconfig文件的配置,发现重装系统后的文件中多了一段[url "https://hub.fastgit.org"] insteadOf = https://github.com的脚本,于是将这段脚本赋值到不成的电脑上再次pod install竟然也能成功了。
这里需要注意.gitconfig文件中的格式一定要正确,不然没用的
我将.gitconfig文件中的完整内容贴在下面以供参考,

[core]
    excludesfile = /Users/***/.gitignore_global
[difftool "sourcetree"]
    cmd = opendiff \"$LOCAL\" \"$REMOTE\"
    path = 
[mergetool "sourcetree"]
    cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
    trustExitCode = true
[user]
    name = “***”
    email = “***”

[url "https://hub.fastgit.org"]
    insteadOf = https://github.com

注意: 要根据用户情况修改user 中的信息和 core 中的路径

后续

在后面使用某些第三方的时候报错:fatal: could not read Username for Error: fatal: could not read Username for 'https://hub.fastgit.org': terminal prompts disable The process '/usr/bin/git' failed with exit code 128
这里是因为我们将https://github.com全局替换为https://hub.fastgit.org导致的。用[email protected]:替换掉https://hub.fastgit.org既可解决这个错误。解决后.gitconfig文件中的内容如下:

[core]
    excludesfile = /Users/jiwenzhang/.gitignore_global
[difftool "sourcetree"]
    cmd = opendiff \"$LOCAL\" \"$REMOTE\"
    path = 
[mergetool "sourcetree"]
    cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
    trustExitCode = true
[user]
    name = “zhangjiwen”
    email = “[email protected]”
[url "[email protected]:"]
    insteadOf = https://github.com

你可能感兴趣的:(SSL_ERROR_SYSCALL in connection to github.com:443的解决)