致命错误:无法访问'https://github.com/xxx':在连接到github.com:443时,OpenSSL SSL_connect发生SSL_ERROR_SYSCALL。

105
当我尝试使用`git push`时,出现以下错误:

致命错误:无法访问 'https://github.com/xxx' :OpenSSL SSL_connect:在连接到github.com:443时发生SSL_ERROR_SYSCALL

我的Windows上的git版本是2.16.2。
在这之前它一直运行正常,重新安装git似乎没有用。请有经验的人帮助我吗?先感谢您!

4
有东西阻止了与 GitHub 的连接。很可能是您的计算机或网络上的某种防火墙。如果同一台机器上的浏览器可以使用,则该浏览器可能正在使用代理,您需要配置 git 以使用此代理。 - Steffen Ullrich
1
已经有足够的信息展示如何在git中使用代理,例如让git与代理服务器一起工作。如果之前可以使用但现在无法使用,则需要首先找出您在配置中更改了什么或网络中发生了什么变化,以便正确配置代理。 - Steffen Ullrich
你可以执行 where gitgit --version 命令来验证安装的新版本是否在路径中覆盖了旧版本。因为 GitHub 在 1 或 2 周前废弃了一些安全通信协议,所以应该使用版本大于 2.16 的 Git。 - Philippe
如果您在中国,请打开全局代理,不要使用PAC。 - Huaiyu Huang
我遇到了这个问题,因为我没有连接到公司的 VPN。 - Vladi
显示剩余4条评论
10个回答

122

如果您使用代理服务器,请尝试以下操作:

git config --global --add remote.origin.proxy ""

8
我必须将我的代理放在引号内,例如 "myproxy.domain:port",这样它才能更好地工作。 - Jesse Brandeburg
35
git config --global --unset-all remote.origin.proxy 对我有效。 - Jess
6
git config --global http.sslVerify false 对我有效。 - JerryYu
git config --global --unset-all remote.origin.proxy git push - Md. Imrul Kayes
这对我帮助很大! - arefindev

49

在重新安装 Git 后仍然无法解决问题,我在 GitHub 上找到了一个问题,帮助我解决了这个问题。

在终端中首先运行此命令:

git config --global http.sslBackend "openssl"

那么这个:

git config --global http.sslCAInfo "C:\Program Files\Git\mingw64\ssl\cert.pem"

根据安装位置的不同,您可能需要更改路径。


16
我刚刚运行了 git config --global http.sslBackend "openssl" 命令,这使我能够推送代码。 - gwalshington
3
我也在使用MacOS,执行命令' git config --global http.sslBackend "openssl" ' 已经帮助我解决了问题。 - novski
6
sslVerify设置为false是危险的,这实际上会破坏HTTPS / SSL的作用。 - vcsjones
2
我刚刚运行了第一个命令,它成功了。在将数据推送到代码库时,我遇到了问题。 - Nikhil Redij
2
对我来说很有效。我喜欢在git中完成任何事情都需要我花费半辈子学习难以理解的魔法命令。 - Neutrino
显示剩余2条评论

29

开启一个新的终端会话对我有用


14
git config --global --add remote.origin.proxy "127.0.0.1:(proxy http port number)"

在中文中

输入图片描述

添加图片@afder cc


1
对我来说,更改另一个JMS地址解决了这个问题。 - Liu Hao

13

如果您正在使用代理,请尝试转到“运行”并输入inetcpl.cpl,然后选择“连接”,接着选择“局域网设置”,然后选择“高级”,现在您可以看到您的代理,使用http代理。

然后打开Git Bash,然后输入此命令。

$ git config --global http.proxy 

如果没有输出,那么Git Bash中的代理未设置 然后使用以下命令设置它,并使用第1段中显示的代理和端口

$ git config --global http.proxy proxyaddress:port

然后再次输入此命令

$ git config --global http.proxy 

完成了,设置好了。

要在Git Bash上重置代理,只需输入此命令。

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

最近我也遇到了这些问题,我在桌面上使用Psiphon VPN。作为新手,很难找到解决方案。很高兴我能帮到你。 :)


谢谢。这对我有用。如果您正在使用VPN,要获取代理地址和端口,请打开VPN应用程序并检查日志。通常是127.0.0.1:PORT。 - Zeta.Investigator
1
谢谢,git config --global http.proxy 127.0.0.1:8080 - Ismynr

6
有时候,这可能只是因为您的系统无法连接到GitHub,可能是因为您没有连接到互联网(或者您的网络连接质量很差)。
(确实如此——这个问题可以复现。只需断开您的局域网/WiFi,然后执行git pull,您将得到相同的错误)。
补充说明:这也曾经发生在我身上。有时候问题不在于配置文件,而是你的互联网连接。

对我有用。关闭互联网连接 - 重新连接并重启IDE。 - Tim Maes
这对我有用。我不得不物理断开我的局域网线并重新连接它。我有一个通过Wi-Fi的备份连接,它可能从那里获得了一个新的IP地址。之后执行任何git命令都没有问题。 - kobowo

4

我解决了同样的问题,只需在“克隆”步骤中更改git url - 使用SSH而不是HTTPS链接。


1
你帮了我很大的忙,我尝试了上面提到的所有解决方案,唯一解决我的问题的是你的。 - paul cheung
我第一次按照上面的建议去做,但是还是出现了一个错误。但是我看到了你的回答,再次使用SSH进行操作,现在问题已经解决了。谢谢:) - Arman Ebrahimi

3

我最近安装了Git 2.24.1版本,不确定我做了什么更改,但它不允许我在我的计算机上使用clonepush而不使用管理员帐户。

这是解决我的问题的方法:

  1. In your terminal run this command first:

    git config --global http.sslBackend "openssl"
    
  2. Then this one:

    git config --global http.sslCAInfo "C:\Program Files\Git\mingw64\ssl\cert.pem"
    

1
这个答案与两年前发布的 https://dev59.com/4FUM5IYBdhLWcg3wF9EX#51433565 有何不同? - Étienne

2

对于Shadowsocks用户:

  1. 点击Shadowsocks图标,进入“偏好设置”:

enter image description here

  1. 假设你的本地代理监听端口是XXX,运行以下命令:
git config --global --add remote.origin.proxy "127.0.0.1:XXX"

1

我尝试了许多答案,但仍然遇到相同的错误,包括以下答案:

git config --global http.sslBackend "openssl"

然而,我尝试通过以下方式恢复它:

git config --global --unset-all http.sslBackend

然后重新启动我的笔记本电脑,一切都重新开始工作了。
我不确定最初出了什么问题,但教训是正确的配置并非对所有人都相同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接