VSCode终端不走http.proxy,需在shell配置文件(如~/.bashrc)中导出http_proxy/https_proxy环境变量并用局域网IP,Remote-SSH场景须在远程机器配置。

VSCode终端本身不走http.proxy,别配错地方
VSCode 的 http.proxy 设置只影响编辑器自身请求(比如插件市场、GitHub 登录),对集成终端(Terminal)完全无效。你在设置里填了 http.proxy,但终端里 curl 或 wget 依然连不上外网,这不是配置没生效,而是压根不该在这配。
终端网络行为由系统环境变量控制,和 VSCode 设置无关。要让终端联网,必须在 shell 启动文件中正确导出 http_proxy 和 https_proxy:
-
~/.bashrc(Linux/macOS Bash)、~/.zshrc(Zsh)或%USERPROFILE%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1(Windows PowerShell)中添加: -
export http_proxy="http://192.168.1.100:7890"(注意用局域网 IP,不是127.0.0.1) export https_proxy="http://192.168.1.100:7890"-
export all_proxy="socks5://192.168.1.100:7890"(如代理支持 SOCKS5)
改完后执行 source ~/.bashrc(或对应文件),再新开一个终端验证:env | grep -i proxy 应该能输出你刚设的值。
终端代理失效?检查 bypass 规则和协议头
即使环境变量写了,终端仍可能绕过代理——尤其是当你用 127.0.0.1 或 localhost 作为代理地址时。Windows/macOS 系统默认把本地地址加入 bypass 列表,curl 会直接走直连。
验证方式很简单:运行 curl -x http://127.0.0.1:7890 https://httpbin.org/ip。如果返回超时或报错,说明请求被 bypass;如果返回真实出口 IP,才说明代理通。
解决办法只有两个:
- 换用局域网 IP(如
192.168.1.100),并确认代理软件已开启allow-lan: true(Clash)或等效选项 - 在终端里临时禁用 bypass:
unset NO_PROXY(有些代理会读这个变量)
别漏掉协议头:http:// 必须写全,127.0.0.1:7890 这种格式会被 curl 当作 host,不触发代理逻辑。
重置终端网络环境:清空所有 proxy 变量
如果你之前乱试过各种代理配置,最干净的复原方式是彻底清除所有相关环境变量:
- 执行
unset http_proxy HTTPS_PROXY HTTP_PROXY https_proxy ALL_PROXY all_proxy NO_PROXY - 检查是否清干净:
env | grep -i proxy应该无输出 - 删掉 shell 配置文件中所有
export.*proxy行(~/.bashrc等) - 重启终端(不是关窗口,是彻底关闭再开新实例)
此时终端恢复系统默认行为:不走任何代理,直连网络。如果直连也不通,问题就出在 DNS、防火墙或物理连接上,和 VSCode 无关。
Remote-SSH 终端无法联网?代理必须配在远程机器上
通过 Remote-SSH 连服务器后,终端跑在远程 Linux 上,它完全不读你本地 Windows/macOS 的环境变量,也不读本地 VSCode 的 http.proxy 设置。
必须在远程机器上操作:
- 编辑远程的
~/.bashrc或~/.zshrc,添加export http_proxy=... - 确保远程机器能访问你的代理地址(比如
192.168.1.100是你本机,远程需能 ping 通) - 执行
source ~/.bashrc,然后新开终端验证
注意:~/.ssh/environment 在多数 SSH 服务端默认禁用,靠它传变量不可靠;export 写进 shell 配置才是稳定方案。
真正容易被忽略的是:VSCode 终端和编辑器网络栈完全隔离,http.proxy 对终端零影响;而 Remote-SSH 场景下,你本地的所有代理设置对远程终端都无效——必须在远程机器上单独配置、单独验证。











