【Ubuntu git clone命令报错】fatal: unable to access ‘https://github.com/XXX‘: gnutls_handshake() failed:

Ubuntu git clone命令报错

执行下面命令行:

git clone https://github.com/XXX 

报错:

Cloning into 'XXX'...
fatal: unable to access 'https://github.com/XXX': gnutls_handshake() failed:The TLS connection was non-properly terminated.

解决办法: 将命令中的https改为git如下:

git clone git://github.com/XXX 

若出现以下错误:

Cloning into 'XXX'...
fatal: unable to connect to github.com:
github.c
### 解决 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]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值