fatal: unable to access ‘https://github.com/.git/‘: gnutls_handshake() failed: Error

当使用`git clone`通过https方式从GitHub克隆仓库时遇到gnutls_handshake()错误,尝试用git方式克隆成功。一般开源项目常用https,但可能因权限问题失败。网上的解决办法是重新构建git,替换gnutls为openssl,但此过程可能复杂。文中提供了一个简单的解决方案:编辑`~/.gitconfig`,将`sslVerify`设为`true`,测试有效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

git clone 时 用 https的方式,报错 fatal: unable to access ‘https://github.com/.git/‘: gnutls_handshake() failed: Error, 用git 的方式clone 时ok,但是一般开源的安装包(如果需要用源码安装的话)都会是 https方式,当然也可以自己去找到 git 地址 clone,但是一般也会因为没有权限而失败。

网上常见的方式是 重新构建git安装包,替换gnutls为openssl可以修改上述问题。

但是我在构建的时候一直失败,怎么都过不去,无奈又找了个简单的方法,具体如下,我这边是测试没有问题的。

增加如下设置:

vi ~/.gitconfig
[https]
sslVerify=true
### 解决 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]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值