您现在的位置是:首页 >技术交流 >git clone报错fatal: unable to access Failed to connect to github.com port 443: Timed out网站首页技术交流
git clone报错fatal: unable to access Failed to connect to github.com port 443: Timed out
—— 确保本地能正常访问github ——
一、Git 未使用 正确 的网络路由
○ 测试 Git 是否能通过代理软件 专属路由流量,并且正确访问github:
bash
curl -v https://github.com
如果 curl 能正常访问,但 git clone 不行,可能是 Git 的代理配置问题。
二、手动配置 Git 使用代理
即使软件 开启了系统代理,Git 可能不会自动使用它。你需要手动为 Git 配置代理。
配置步骤:
在终端中运行以下命令,设置 HTTP 和 HTTPS 代理:
bash
git config --global http.proxy http://127.0.0.1:10080
git config --global https.proxy http://127.0.0.1:10080
测试代理是否生效:
bash
git ls-remote https://github.com/elastic/eui.git
如果输出了仓库的远程信息,说明代理配置成功。
如果代理配置成功后可以正常克隆代码:
bash
git clone https://github.com/仓库地址.git
如果需要取消代理配置(例如切换到其他网络环境时、或者本身环境下已经可以直接访问github,不需要配置),可以运行以下命令:
bash
git config --global --unset http.proxy
git config --global --unset https.proxy
如果任不起作用,可以尝试下载zip包后手动使用git管理,或者使用SSH拉取
原理:
1. 什么是代理
代理(Proxy)是一种中间服务器,充当客户端(你的电脑)和目标服务器(如 GitHub)之间的中介。通过代理,客户端的请求会先发送到代理服务器,再由代理服务器转发到目标服务器。目标服务器的响应也会通过代理服务器返回给客户端。
在你的情况下:
● 你的 代理软件在本地开启了一个代理服务(监听 127.0.0.1:10080)。
● Git 默认不会自动使用系统代理,因此需要手动配置代理地址。
2. 为什么需要配置 Git 的代理?
Git 默认直接通过系统的网络接口访问目标服务器(如 GitHub)。即使你的 VPN 已经开启了系统代理,Git 并不会自动遵循系统代理设置。这是因为:
- Git 是一个独立的命令行工具,它不会像浏览器那样自动使用系统代理。
- 如果没有配置代理,Git 的网络请求会绕过 代理软件,直接通过本地网络访问 GitHub。这可能导致连接超时或被阻断(例如在中国大陆访问GitHub 时)。
通过手动配置 http.proxy 和 https.proxy,你告诉 Git:
- 所有 HTTP 和 HTTPS 请求都需要通过 127.0.0.1:10080(VPN 的代理端口)发送。
- 这样,Git 的网络请求就会被 代理软件 代理转发,从而成功连接到 GitHub。
另外
为什么浏览器可以正常访问,而 Git 不行?
浏览器通常会自动使用系统代理,而 Git 不会。以下是两者的区别:
- 浏览器:
○ 浏览器会自动检测系统代理设置(例如通过 代理软件 软件设置的代理)。
○ 因此,即使没有手动配置,浏览器也能通过 代理软件 访问 GitHub。 - Git:
○Git 不会自动使用系统代理。
○ 如果没有手动配置代理,Git 的网络请求会直接通过本地网络发送,而不是通过 代理软件。这可能导致连接超时或被阻断