VSCode连GitHub超时主因是代理未生效:http.proxy必须为http://127.0.0.1:7890格式(禁用localhost、必带前缀),且localhost/127.0.0.1默认被系统bypass拦截;Remote场景须配远程~/.vscode-server/data/Machine/settings.json并重启连接。

VSCode 连 GitHub 一直超时,90% 不是网络本身断了,而是请求压根没走代理——填了 http.proxy 却被系统 bypass 规则拦截,或根本没配到正确位置。
http.proxy 填错格式导致静默失效
VSCode 只认严格格式的 http.proxy 字符串,任何偏差都会让它直接忽略配置:
-
http://127.0.0.1:7890✅(Clash/Shadowrocket 默认 HTTP 端口) -
https://127.0.0.1:7890❌(VSCode 不支持 HTTPS 代理端口,会静默失败) -
127.0.0.1:7890❌(缺http://前缀,完全不生效) -
localhost:7890❌(部分版本解析异常,且默认被 bypass 规则拦截) - 含特殊字符密码需 URL 编码:
http://user:pass%40word@127.0.0.1:7890
localhost 和 127.0.0.1 被自动 bypass 是最大陷阱
Windows/macOS 系统级 bypass 列表默认包含 localhost 和 127.0.0.1,VSCode 发往本地代理的请求直接走直连,根本不会触达你的代理进程。
验证方式:终端执行 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 / WSL 场景下代理必须配在远程机器上
你在本地 VSCode 里设置的 http.proxy 对远程服务器上的 vscode-server 进程完全无效。Copilot、插件市场、Git 提交等所有网络行为,都发生在远程环境里。
正确做法是修改远程机器上的配置文件:
- 路径:
~/.vscode-server/data/Machine/settings.json(注意是Machine,不是User或Remote) - 内容示例:
{"http.proxy":"http://192.168.1.100:7890","http.proxyStrictSSL":false} - 改完必须重启 Remote 连接(不是重载窗口),否则不加载
- 别指望
~/.bashrc里的export HTTP_PROXY—— SSH 非交互式 shell 不 source 它,vscode-server也完全不认
证书错误(DEPTH_ZERO_SELF_SIGNED_CERT)常被忽略
很多本地代理(Charles、Fiddler、mitmproxy)用自签名证书,VSCode 默认拒绝连接,表现为 Marketplace 空白页、Copilot 卡转圈、日志里出现 ERR_SSL_UNRECOGNIZED_NAME_ALERT 等。
临时绕过方法(仅限可信代理):
- 在远程或本地的
settings.json中加:"http.proxyStrictSSL": false - 或设环境变量:
NODE_TLS_REJECT_UNAUTHORIZED=0(需确保启动方式继承该变量)
真正稳定的解法是给代理导入系统信任证书,而不是长期关 SSL 校验。
复杂点在于:同一个代理地址,在 Git、npm、浏览器、VSCode 里要分别配四次,且每处的 bypass 规则、协议头、认证格式都不一样。最容易被忽略的是 Remote 场景下连 Machine/settings.json 文件都不存在——得手动创建,再确认 vscode-server 进程是否真读到了它。


















