git clone返回错误gnutls_handshake() failed: Handshake failed

平台

Linux

现象

git clone 'https://xxx/xxx/xxx.git'

failed: fatal: unable to access 'https://xxx/xxx/xxx.git/': gnutls_handshake() failed: Handshake failed

原因

git工具默认使用gnutls包进行网络加密传输,但在特殊情况下(如使用了代理服务器)gnutls会出现奇怪的问题,我们可以使用更稳定的openssl包来代替gnutils的功能。

参考链接:git - "error: gnutls_handshake() failed" when connecting to https servers - Ask Ubuntu

解决

⚠️⚠️⚠️此解决方案需要删除系统原有的git,请谨慎操作!

参考链接:How can I install git version 2.10 with openssl instead of gnu_tls for ubuntu 14 - Stack Overflow

删除原来的git(谨慎操作)。

sudo apt remove git

找一个空白目录,执行wget命令下载脚本。脚本用于重新编译基于openssl的git工具。

脚本来源:paul-nelson-baker/git-openssl-shellscript: Shellscript to compile git with OpenSSL (github.com)

wget https://raw.githubusercontent.com/paul-nelson-baker/git-openssl-shellscript/main/compile-git-with-openssl.sh

 运行脚本。此时将依次开始下载依赖工具、下载git源码、编译git、测试git、安装git。脚本执行需要一段时间,可以去休息一会儿~

注:测试git功能的过程会花费较长时间,可以在执行脚本前先export SKIPTESTS=YES以跳过测试过程,直接安装git。

chmod +x compile-git-with-openssl.sh
./compile-git-with-openssl.sh

当命令行不再滚动并且输出如下文本时,脚本执行完毕。重启命令行以完成git安装。

Make sure to refresh your shell!

在新打开的命令行中重新执行git clone,此时应当不再报错。

你可能感兴趣的:(git)