GIT: gnutls_handshake failed问题

在尝试gitclonehttps://github.com/xxx/linux.git时遇到gnutls_handshake错误。通过添加代码分支参数-bxxx成功下载了项目。

问题描述

在使用git clone下载代码时遇到报错如下:

Cloning into 'linux'...
fatal: unable to access 'https://github.com/xxx/linux.git/': gnutls_handshake() failed: Error in the pull function.

问题排查

看了网上的方法,有些挺复杂,想着在尝试之前自己再挣扎下,于是做了以下尝试:

git clone -b xxx https://github.com/xxx/linux.git

加上了代码分支后成功了。

### 解决 Ubuntu 中 `git clone` GitHub 仓库时出现 `gnutls_handshake()` 失败的问题 当尝试通过 HTTPS 协议克隆 GitHub 上的 Git 仓库时,在某些情况下可能会遇到类似于 `gnutls_handshake() failed: Error in the pull function.` 的错误提示。此问题通常与系统的 GnuTLS 库版本有关或者网络连接不稳定引起。 #### 方法一:更新或重新安装 Git 和相关依赖库 为了确保使用的工具是最新的,可以考虑升级现有的软件包: ```bash sudo apt update && sudo apt upgrade -y ``` 如果上述操作未能解决问题,则可能需要完全移除并重装 Git 及其关联组件来修复潜在损坏文件: ```bash sudo apt remove --purge git sudo apt install git libcurl4-gnutls-dev libssl-dev ``` #### 方法二:切换到 SSH 方式访问远程仓库 对于支持 SSH 访问权限的情况,建议改为使用 SSH URL 进行拉取操作,这有助于避开因 SSL/TLS 握手过程引发的问题。具体做法如下所示: 1. 配置本地环境以便能够利用 SSH 密钥认证登录; 2. 将原本基于 HTTP(s) 的链接替换为对应的 SSH 形式的地址; 例如原命令: ```bash git clone https://github.com/google/googletest.git ``` 应更改为: ```bash git clone git@github.com:google/googletest.git ``` 注意在此之前需先完成个人账户下公私钥对创建以及服务器端授权设置[^1]。 #### 方法三:调整 Git 使用不同的 TLS 后端实现 有时更改 Git 所采用的安全传输层协议栈也能有效规避此类握手异常现象的发生。可以通过修改配置参数让 Git 调用 OpenSSL 来代替默认选项(GnuTLS),即运行下面这条指令: ```bash git config --global http.sslBackend openssl ``` 之后再次发起相同请求看看是否恢复正常工作状态[^3]。 #### 方法四:临时禁用证书验证机制 作为最后手段之一,可以在短期内关闭对远端站点身份证明材料的有效性检验功能,但这会降低安全性因此不推荐长期如此做除非确实有必要这么做而且清楚其中风险所在: ```bash GIT_SSL_NO_VERIFY=true git clone https://github.com/google/googletest.git ``` 以上几种方式均有可能帮助克服由 `gnutls_handshake()` 函数调用失败所造成的障碍,可根据实际情况灵活选用最适合自己场景的办法加以处理[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜西海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值