ubuntu中Fatal: unable to access 'https://github.com/langgenius/dify.git/': gnutls_handshake() failed: Error in the pull function.
时间: 2025-03-13 21:11:11 浏览: 48
### 解决 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 [email protected]: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]。
阅读全文
相关推荐


















