vscode的http.proxy不生效主因是格式错误、被bypass规则拦截或remote场景配错位置;必须用http://127.0.0.1:7890格式,禁用localhost,remote需配远程machine/settings.json并重启ssh连接。

VSCode 的 http.proxy 设置不生效,插件市场卡在“正在加载”或报 ETIMEDOUT,根本原因不是代理没开,而是 VSCode 不继承系统代理、不读环境变量、也不走浏览器代理——填错格式、被 bypass 规则拦截、或 Remote 场景配错位置,三者占了 90% 的失败案例。
http.proxy 填什么才真正生效
VSCode 只认 http.proxy 配置项,且必须带协议前缀、用 IP 地址、不能省略端口:
-
http://127.0.0.1:7890✅(Clash/Shadowrocket 默认 HTTP 端口) -
https://127.0.0.1:7890❌(HTTPS 代理端口通常不开放,VSCode 会静默失败) -
127.0.0.1:7890❌(缺协议头,VSCode 完全忽略) -
localhost:7890❌(部分版本解析异常,Windows/macOS 的 bypass 规则也默认拦截 localhost) - 需认证时写成
http://user:pass%40word@127.0.0.1:7890(密码含@或:必须 URL 编码)
为什么填了还是连不上 Marketplace
最常见原因是本地地址被自动 bypass,导致请求根本没进代理进程:
- Windows/macOS 默认把
localhost和127.0.0.1加入 bypass list,VSCode 发往127.0.0.1:7890的请求直接走直连 - 验证方式:终端执行
curl -x http://127.0.0.1:7890 https://httpbin.org/ip,若返回真实出口 IP 才说明代理通;若超时或报错,说明 bypass 生效了 - 解决办法:要么改用局域网 IP(如
http://192.168.1.100:7890),并确保代理软件开启allow-lan: true;要么在 VSCode 设置中显式覆盖 bypass:"http.proxyBypassList": ["<local>"]</local>(但不如换 IP 直接)
Remote-SSH 场景下插件装不了?代理没配到远程机器
本地 VSCode 的 http.proxy 对远程服务器上的 vscode-server 进程完全无效:
- Remote 插件安装失败,90% 是因为没在远程机器上单独配代理
- 正确路径是修改远程机上的
~/.vscode-server/data/Machine/settings.json(注意是Machine,不是User或Remote) - 内容示例:
{"http.proxy":"http://192.168.1.100:7890","http.proxyStrictSSL": false} - 该文件只在 vscode-server 启动时读取,改完必须重启 SSH 连接(不是重载窗口)
- 别在
~/.bashrc里 exportHTTP_PROXY:SSH non-interactive shell 不 source 它,vscode-server 也完全不认
证书错误(DEPTH_ZERO_SELF_SIGNED_CERT)怎么解
VSCode 内置 Electron 的证书列表,不走系统根证书库,所以自签名代理(Charles、Fiddler、企业中间人代理)必然报证书错误:
- 必须加配置
"http.proxyStrictSSL": false,否则连接直接拒绝,Marketplace 页面空白或无限转圈 - 哪怕你已把代理证书导入系统信任库,VSCode 仍会校验失败
- 如果用了 Zscaler、Netskope 等企业代理,这行几乎是必配项,跳过则所有 HTTPS 请求失败
- 不建议手动往 Electron 证书库里塞证书——升级 VSCode 后丢失,且操作复杂易出错
真正容易被忽略的是:VSCode 的网络栈分三层——主进程、渲染进程、Extension Host,而 http.proxy 只影响主进程发起的请求(插件安装、登录、更新)。扩展自身发的请求(比如 GitLens 调 GitHub API、Prettier 调在线 formatter)不受控,得靠环境变量或插件自己支持代理配置。











