在国内由于网络原因,在命令窗口能够Ping通github.com域名,但通过git命令操作github仓库代码时,无论是克隆,拉取、推送还是提交,经常会出现fatal: unable to access 'xxx': Failed to connect to github.com port 443: Timed out 禁止访问连接或者github连接超时异常,有时候即使开了梯子也没用,把VPN工具改成全局路由模式也不行。下面记录几种常见解决方法,彻底解决git命令连接github连接超时问题。
Hosts文件是系统中用于将网址域名与IP地址进行快速映射的数据库,在用户访问网站时优先被查询。这个没有扩展名的系统文件,虽然不起眼,却扮演着至关重要的角色。它类似于一个关联“数据库”,将众多常用的网址域名与对应的IP地址紧密相连。每当用户在浏览器中输入一个网址并尝试登录时,系统会首先自动在Hosts文件中寻找相应的IP地址。一旦找到,系统会迅速打开对应的网页;若未找到,则会自动将网址提交至DNS域名解析服务器进行IP地址的深入解析。
在解决 GitHub 在提交代码时出现 443 错误的问题时,修改 hosts 文件是一个可能的解决方案。这通常发生在 GitHub 的 IP 地址被错误地解析或者 DNS 解析出现问题的情况下,导致连接超时问题。通过修改hosts文件后,你可以绕过国内的访问限制,当尝试访问github及其相关域名时,系统将优先使用这些映射,从而可能解决网络连通性问题。以下是具体步骤:
首先,你需要找到 GitHub 的 IP 地址。可以通过运行以下命令来获取 GitHub 的 IP 地址:
ping github.com

或者,你可以使用以下命令获取更多 IP 地址:
nslookup github.com

在不同操作系统中,Hosts文件的位置各有不同,便于管理和编辑。例如,在Windows系统中,它通常位于C:\Windows\System32\drivers\etc\hosts路径下;而在Android和iOS系统中,它则分别位于/etc/hosts和/private/etc/hosts等路径。对于Mac OS X系统,其位置则可能因版本不同而有所差异。
1、以管理员权限身份,通过记事本打开C:\Windows\System32\drivers\etc\hosts文件。
2、在文件末尾添加以下行(替换 <github_ip> 为你从 ping 或 nslookup 命令中获取的 IP 地址):
<github_ip> github.com
3、保存修改后的配置文件,并关闭文件。
4、为了确保更改生效,你可以清空 DNS 缓存,在终端刷新本地DNS缓存:
ipconfig /flushdns
1、打开终端。
2、使用文本编辑器打开 /etc/hosts 文件,例如使用命令:
sudo vi /etc/hosts
3、在文件末尾添加以下行(同样替换 <github_ip>):
<github_ip> github.com
4、保存修改后的配置文件,并关闭文件。
5、在 macOS 或 Linux 上,通常不需要手动清空 DNS 缓存,因为系统会自动处理。但如果你怀疑有缓存问题,可以尝试重启你的计算机。
hosts文件中加入<github ip> github.com后发现还是连接不通,可以尝试加入以下IP地址和域名映射关系:185.199.108.154 github.githubassets.com
140.82.113.22 central.github.com
185.199.108.133 desktop.githubusercontent.com
185.199.109.153 assets-cdn.github.com
185.199.110.133 camo.githubusercontent.com
185.199.108.133 github.map.fastly.net
151.101.201.194 github.global.ssl.fastly.net
140.82.116.3 gist.github.com
185.199.108.153 github.io
140.82.116.3 github.com
140.82.116.6 api.github.com
185.199.111.133 raw.githubusercontent.com
185.199.108.133 user-images.githubusercontent.com
185.199.108.133 favicons.githubusercontent.com
185.199.110.133 avatars5.githubusercontent.com
185.199.108.133 avatars4.githubusercontent.com
185.199.108.133 avatars3.githubusercontent.com
185.199.109.133 avatars2.githubusercontent.com
185.199.108.133 avatars1.githubusercontent.com
185.199.108.133 avatars0.githubusercontent.com
185.199.109.133 avatars.githubusercontent.com
140.82.116.9 codeload.github.com
52.217.135.153 github-cloud.s3.amazonaws.com
3.5.21.109 github-com.s3.amazonaws.com
3.5.29.177 github-production-release-asset-2e65be.s3.amazonaws.com
52.216.63.25 github-production-user-asset-6210df.s3.amazonaws.com
52.217.223.1 github-production-repository-file-5c1aeb.s3.amazonaws.com
185.199.110.153 githubstatus.com
140.82.112.17 github.community
185.199.108.133 media.githubusercontent.com
对于windows系统可以借助第三方工具WinHostsManager进行修改hosts文件。 WinHostsManager 是一款功能强大的hosts文件管理工具,主要用于管理和修改hosts文件。
WinHostsManager的主要功能包括:
此外,WinHostsManager还具有以下特点:
通常我们访问GitHub站点都需要本地打开VPN工具才能访问,但即使打开VPN工具,打开了全局代理模式,git拉取或者提交代码依然报443连接错误。在Git中配置代理服务器是为了帮助你通过一个HTTP或HTTPS代理连接到GitHub外部网络资源,根据你的网络环境,你可能需要设置代理来绕过某些限制或提高访问速度,才能让git客户端通过VPN代理渠道访问github,否则git客户端不走VPN代理就会出现连接错误。
打开本地VPN工具,查看设置页面http(s)代理IP和端口。以海豚湾为例,查看方法如下图:
或者查看电脑本地代理端口,查看方法如下图:

1. 全局代理配置
如果你希望对所有Git操作使用同一个代理服务器,你可以通过以下命令格式配置全局代理:
# 配置http代理
git config --global http.proxy http://proxy_address:port
# 配置https代理
git config --global https.proxy https://proxy_address:port
将proxy_address和port替换为你的代理服务器的地址和端口。例如:您正在使用127.0.0.1的代理服务器和4780的端口,那么您需要输入以下命令:
# 配置http代理
git config --global http.proxy http://127.0.0.1:4780
# 配置https代理
git config --global https.proxy https://127.0.0.1:4780
2. 单个仓库代理配置
如果你只想为特定的Git仓库设置代理,而不是全局,你需要进入到本地具体代码仓库目录下,使用以下命令:
git config http.proxy http://proxy_address:port
git config https.proxy https://proxy_address:port
同样地,替换proxy_address和port为你的代理服务器信息。
3. 取消代理配置
如果你需要取消之前设置的代理配置,可以使用以下命令:
git config --global --unset http.proxy
git config --global --unset https.proxy
或者针对单个仓库:
git config --unset http.proxy
git config --unset https.proxy
4. 查看代理配置
如果你需要查询当前代理配置,可以使用以下命令:
# 查看http代理
git config --global --get http.proxy
# 查看https代理
git config --global --get https.proxy
或者针对单个仓库:
# 查看http代理
git config --get http.proxy
# 查看https代理
git config --get https.proxy
如果VPN代理IP和端口发生改变,需要重新配置git代码地址。