在开发环境或公司内网中,Manager类工具(例如包管理器、版本控制客户端或凭证管理器)突然无法访问外部网络,是很常见的问题。很多时候并不是物理网络断开,而是代理设置没有正确传递到工具进程,或者Git相关的环境变量被遗漏。这类故障往往表现为拉取依赖超时、git clone报错、认证窗口循环弹出等。要解决它,需要系统梳理代理环境变量和Git自身的代理配置,并确认它们在不同终端会话中是否保持一致。

一、检查代理环境变量是否生效
大多数命令行工具会读取系统环境变量中的HTTP_PROXY和HTTPS_PROXY来决定是否走代理。可以先在终端里执行echo $HTTP_PROXY(Linux/macOS)或echo %HTTP_PROXY%(Windows CMD)查看当前会话中的值。如果为空,说明代理没有被当前shell继承,即使系统设置里填了代理,命令行工具也感知不到。
另一种常见情况是设置了代理变量,但变量格式不正确。例如有些工具要求代理地址包含协议头http://,而有些只需要IP和端口。最好统一写成http://127.0.0.1:7890这样的形式。还需要注意大小写:部分程序只读取小写的http_proxy,而另一些只读大写,建议同时设置两组。可以在终端中临时导出:
export HTTP_PROXY=http://127.0.0.1:7890 export HTTPS_PROXY=http://127.0.0.1:7890 export http_proxy=http://127.0.0.1:7890 export https_proxy=http://127.0.0.1:7890
设置完成后可以运行curl -I https://www.google.com或curl -I https://github.com测试代理是否连通。如果curl返回200或301等状态码,说明代理本身可用,问题可能出在Manager工具没有读取这些变量。
二、为Git单独配置代理
Git不会自动使用HTTP_PROXY变量作为http代理,除非在配置中显式指定。很多人误以为设置了系统环境变量后Git就会走代理,其实git clone、git push等操作需要通过git config来单独设置。git config --global http.proxy http://127.0.0.1:7890和git config --global https.proxy http://127.0.0.1:7890是常用的全局配置。
如果代理需要身份认证,可以在代理地址中加入用户名和密码,例如http://user:password@proxy.ipipp.com:8080。但密码包含特殊字符时需要进行URL编码,否则Git会解析失败。也可以只设置http.proxy,因为https.proxy通常复用http.proxy的值,但有些代理对https有不同端口,所以建议两个都设置。
配置完成后查看:git config --global --get-regexp proxy。想要取消代理时使用git config --global --unset http.proxy和git config --global --unset https.proxy。另外如果内网git仓库不走代理,可以使用NO_PROXY环境变量来排除,后面会讲。
# 全局设置Git代理 git config --global http.proxy http://127.0.0.1:7890 git config --global https.proxy http://127.0.0.1:7890 # 查看当前代理配置 git config --global --get-regexp proxy # 取消代理 git config --global --unset http.proxy git config --global --unset https.proxy
三、NO_PROXY排除内网与本地地址
如果公司内部有私有的Git服务器或内部包仓库,设置代理后可能导致内网地址也被代理转发,从而无法连接。这时需要配置NO_PROXY环境变量,让指定的域名、IP或IP段绕过代理。常见的写法包括localhost,127.0.0.1,.corp.ipipp.com,192.168.0.0/16。
在Git中还可以使用http.noProxy配置项来实现类似功能,但Git 2.37及以上版本才支持。对于旧版本,可以直接设置环境变量NO_PROXY。需要注意的是NO_PROXY的匹配规则在不同工具中略有差异:有些支持CIDR网段,有些只支持后缀匹配。为兼容性考虑,建议同时列出具体主机名和IP段。
export NO_PROXY=localhost,127.0.0.1,.ipipp.com,192.168.0.0/16 export no_proxy=$NO_PROXY
另外,如果在Windows系统上用PowerShell,设置环境变量语法是$env:HTTP_PROXY="http://127.0.0.1:7890",并且PowerShell中的环境变量名通常不区分大小写,但为了脚本兼容,建议统一使用大写。
四、持久化配置与故障排除
临时export只对当前终端会话有效,关闭终端后配置丢失。为了每次打开终端都自动生效,可以将export命令写入shell配置文件。Linux/macOS下写入~/.bashrc、~/.zshrc或~/.profile;Windows下可以通过“系统属性-环境变量”图形界面添加,或者使用setx命令,但注意setx不会改变当前会话,需要重新打开终端。
故障排查时,先用env | grep -i proxy查看当前会话所有代理相关变量,再执行git config --global --list查看Git代理配置。如果发现代理配置正确但Manager仍然无法联网,可能是SSL证书验证问题,可以临时设置GIT_SSL_NO_VERIFY=true测试,但不建议长期关闭证书校验。更好的做法是导入公司自签名CA证书到系统信任链,然后让Git使用系统证书库。
还有一种典型情况是代理软件监听在localhost端口,但Manager运行在容器或虚拟机中,localhost指向容器自身而不是宿主机。此时需要将代理地址改成宿主机IP,例如http://192.168.1.100:7890,并确保防火墙允许该端口访问。
# 查看代理环境变量 env | grep -i proxy # 查看Git配置 git config --global --list # 测试代理连通性 curl -v -x http://127.0.0.1:7890 https://github.com
总的来说,Manager无法联网的根源多数是代理环境变量没有传递到进程,或者Git自身没有正确配置代理。按照上面的步骤逐项检查,通常可以快速恢复。如果问题依然存在,考虑查看Manager的调试日志,确认它接收到的代理参数是什么。
Manager无法联网代理设置Git环境变量修改时间:2026-10-04 19:45:35