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,此时应当不再报错。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值