最终我通过这个博客解决了问题:
解决Git错误:gnutls_handshake() failed: The TLS connection was non-properly terminated
解决方案
1. 检查网络连接
首先,确保你的网络连接是稳定的。尝试访问其他HTTPS网站或服务,以排除网络问题。
2. 更新Git和GnuTLS
确保你的Git和GnuTLS版本是最新的。老版本的软件可能包含已知的安全漏洞或不支持最新的TLS协议。
你可以使用以下命令来更新Git(在大多数Linux发行版上):
sudo apt-get update
sudo apt-get install git
对于GnuTLS的更新,你需要根据你的操作系统和包管理器来执行相应的命令。
3. 配置Git使用HTTP而不是HTTPS
如果你无法更新Git或GnuTLS,或者更新后问题仍然存在,你可以尝试配置Git使用HTTP而不是HTTPS来访问远程仓库。这将绕过SSL/TLS证书验证,但请注意,这样做会降低安全性。
你可以使用以下命令来配置Git使用HTTP:
git config --global http.postBuffer 524288000
git config --global http.sslVerify false
这将禁用SSL证书验证,并将HTTP POST缓冲区的大小设置为较大的值,以避免因文件大小限制而导致的错误。
4. 配置Git使用特定的SSL/TLS版本
如果更新Git和GnuTLS没有解决问题,你还可以尝试配置Git使用特定的SSL/TLS版本。这可以通过设置GIT_SSL_VERSION
环境变量来实现。
例如,要配置Git使用TLSv1.2,你可以在运行Git命令之前设置环境变量:
export GIT_SSL_VERSION=tlsv1.2
git clone https://.../...
你可以根据需要尝试不同的SSL/TLS版本。
5. 检查远程仓库的SSL/TLS证书
如果以上方法都没有解决问题,可能是远程仓库的SSL/TLS证书存在问题。你可以使用openssl
命令来检查证书的有效性。
openssl s_client -connect host:port
将host
和port
替换为远程仓库的主机名和端口号。如果证书有效,你将看到证书的相关信息。如果证书无效或不受信任,你可能需要联系远程仓库的管理员来解决这个问题。