Git Clone 失败——SSL 证书验证问题

笔者在使用一个很久未用的ubuntu虚拟机使用https协议git clone远程仓库时,发现克隆失败,开始以为是git版本过低了,更新了一下发现仍然无法clone,然后就换用SSH克隆仓库,竟然成功了,这让我很疑惑,打算找一找https克隆时出现了什么问题。以下内容记录了我是一步步排查解决问题的。

一、问题现象

执行 git clone https://github.com/octocat/hello-world.git 命令后,终端输出如下错误:

Cloning into 'hello-world'...
fatal: unable to access 'https://github.com/octocat/hello-world.git/': Failed to connect to github.com port 443 after 21036 ms: Connection refused

同时,在拉取项目子模块时,也出现类似的 GnuTLS recv error 等连接失败的提示。

二、排查与定位问题的过程

1. 初步检查网络连通性

首先想到的是网络问题,执行 ping github.com,发现能够成功收到回复,说明网络基础连通性是正常的,不是域名解析或网络链路的问题。

2. 检查 Git 代理配置

Git 可能单独设置了代理,导致 HTTPS 连接异常。执行以下命令查看并清除代理:

# 查看 Git 全局 HTTP 代理
git config --global --get http.proxy
# 查看 Git 全局 HTTPS 代理
git config --global --get https.proxy

# 如果有输出(如代理地址),清除代理配置
git config --global --unset http.proxy
git config --global --unset https.proxy

执行后发现没有代理配置输出,说明不是 Git 代理的问题。

3. 检查系统级代理环境变量

系统的 http_proxy/https_proxy 环境变量可能影响 Git 连接。执行以下命令查看并清除:

# 查看环境变量
echo $http_proxy
echo $https_proxy

# 如果有输出(如代理地址),临时清除(仅当前终端有效)
unset http_proxy
unset https_proxy

同样没有代理地址输出,排除系统代理的影响。

4. 测试临时关闭 SSL 证书验证

尝试临时关闭 Git 的 SSL 证书验证(仅用于测试,不建议长期开启),执行:

# 临时关闭 SSL 证书验证
git config --global http.sslVerify false

# 再次尝试拉取测试仓库
git clone https://github.com/octocat/hello-world.git

这次克隆成功了,说明问题与 SSL 证书验证有关。

三、解决问题

1. 彻底重新安装和更新证书相关组件

由于 SSL 证书验证出现问题,我们需要彻底重新安装和更新系统的证书相关组件。在 Ubuntu 系统下,执行以下命令:

sudo apt-get remove --purge ca-certificates
sudo apt-get install ca-certificates
sudo update-ca-certificates --fresh
sudo apt update

--purge 选项会彻底移除 ca-certificates 及其配置文件,然后重新安装,--fresh 选项强制更新证书缓存。

2. 恢复 Git 的 SSL 证书验证

修复完成后,重新开启 Git 的 SSL 证书验证,确保连接的安全性:

git config --global http.sslVerify true

3. 验证解决效果

再次执行 git clone https://github.com/octocat/hello-world.git,这次成功克隆了仓库,说明问题已经解决。

总结

当遇到 Git clone 因 SSL 证书验证失败而连接失败时,可按照“检查网络与代理 → 临时关闭证书验证定位问题 → 彻底重装更新证书组件”的流程来排查和解决。这套“清除旧证书 → 重装 → 强制刷新”的方法,能有效解决大多数 Linux 系统的证书信任链问题,保障 Git 等工具的 HTTPS 连接安全性与稳定性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值