VSCode插件私有云部署失败主因是代理未双端配置且marketplace请求绕过系统代理;须在本地和远程Machine/settings.json中显式设http.proxy,重定向extensions.gallery.serviceUrl至私有市场地址,并确保路径末尾为/api/gallery。

VSCode 插件私有云部署在企业网络中失败,90% 是因为代理没配对位置——本地设置不透传到远程机器,且 Marketplace 请求绕过系统代理,必须双端显式配置 http.proxy 并重定向 extensions.gallery.serviceUrl。
为什么填了 http.proxy 还是装不了插件?
VSCode 的 http.proxy 只影响本地 UI 进程发起的请求(如 GitHub 登录、自动更新),但不会透传给远程服务器上的 vscode-server。Remote-SSH 场景下,插件安装行为实际发生在远程机器,而它完全无视你本地 settings.json 里的代理配置。
- 必须手动编辑远程机器上的
~/.vscode-server/data/Machine/settings.json(注意是Machine目录,不是User或Remote) - 内容示例:
{"http.proxy":"http://192.168.1.100:8080","http.proxyStrictSSL":false} - 改完必须 断开并重连 SSH 连接,仅“重载窗口”无效——
vscode-server启动时才读该文件 - 别在
~/.bashrc里export HTTP_PROXY:SSH 非交互式 shell 不加载它,vscode-server也完全不认
extensions.gallery.serviceUrl 必须显式重定向
VSCode 1.80+ 版本对 Marketplace 的请求强制走内置网络栈,绕过所有系统级和环境变量代理。即使你开了 Clash、设了 HTTP_PROXY,Extensions: Install Extension 依然卡住或报 getGalleryServiceUrl failed。
- 唯一可靠路径是自建私有市场服务(如
vscode-extension-marketplace-server),然后让客户端指向它 - 在全局
settings.json(非 Remote)中写入:"extensions.gallery.serviceUrl": "http://your-private-market:8080/api/gallery",<br>"extensions.gallery.recommendationsUrl": "http://your-private-market:8080/api/gallery"
-
--host 0.0.0.0启动私服必须显式指定,否则默认绑定127.0.0.1,其他机器无法访问
代理地址格式和 bypass 规则陷阱
填错格式或被系统 bypass 规则拦截,会导致请求根本没发到代理进程——VSCode 静默失败,不报错也不提示。
-
http.proxy值必须是完整 URL:http://127.0.0.1:7890✅;127.0.0.1:7890❌(缺协议头,被静默忽略) - 禁用
localhost:Windows/macOS 默认把localhost和127.0.0.1加入 bypass 列表,填localhost:7890就等于没配 - 验证代理是否真通:
curl -x http://127.0.0.1:7890 https://httpbin.org/ip,能返回出口 IP 才算有效 - 若代理用自签名证书(如 Zscaler、旧版 Charles),
http.proxyStrictSSL必须设为false,否则 Marketplace 空白页、安装无响应
最易被忽略的是:私有市场服务启动后,serviceUrl 的路径末尾必须是 /api/gallery,少一个斜杠或拼错大小写,VSCode 就会直接放弃请求,连错误日志都不打。调试时先用浏览器访问该 URL,确认返回 JSON 格式元信息再进 VSCode。


















