remote-ssh卡在“正在下载vscode-server”是远程服务器无法访问update.code.visualstudio.com所致,需在远程机配置http_proxy等环境变量并确保ssh允许用户环境、代理服务开放局域网访问且证书可信。

VSCode 连内网服务器时,http.proxy 配置只影响本地 VSCode 自身的网络请求(比如 Marketplace 插件下载、GitHub 账号登录),**对 Remote-SSH 连接本身完全无效**。真正卡住“正在下载 vscode-server”的环节,是远程服务器自己要联网拉取 vscode-server 二进制包——这个过程不走你本地的 http.proxy,也不走 SSH 隧道,它发生在远程机器上,且默认无代理。
Remote-SSH 连接卡在“正在下载 vscode-server”怎么办
这是最典型的症状:SSH 能通、密码/密钥也对,但连接后一直停在下载阶段,日志里反复出现 Downloading VS Code Server 或 curl: (7) Failed to connect。根本原因是远程服务器没外网,又没配代理,导致它自己无法访问 update.code.visualstudio.com。
- 先确认问题根源:用其他终端(如 Terminal、Xshell)SSH 登上去,手动执行
curl -I https://update.code.visualstudio.com。超时或报错,就坐实了是远程机网络问题 - 不要改本地
settings.json里的http.proxy——它对远程机下载行为零影响 - 远程机必须单独设环境变量:
http_proxy、https_proxy、all_proxy,且需确保 SSH non-interactive shell 能读到(不能只写在~/.bashrc) - 推荐做法:编辑
~/.ssh/environment(若不存在则新建),写入三行:http_proxy=http://192.168.1.100:7890https_proxy=http://192.168.1.100:7890all_proxy=socks5://192.168.1.100:7890 - 然后在
/etc/ssh/sshd_config中确保有PermitUserEnvironment yes,并重启sshd(sudo systemctl restart sshd)
为什么 Remote 场景下 ~/.vscode-server/data/Machine/settings.json 不管用
这个文件只控制远程机上 vscode-server 进程自身的 HTTP 请求(比如插件市场访问、自动更新检查),**不控制它启动前的下载行为**。那个下载动作由 VSCode 客户端触发,通过 SSH 执行一段 shell 脚本完成,全程绕过 VSCode 的配置系统。
-
~/.vscode-server/data/Machine/settings.json生效前提是:vscode-server 已成功下载并启动 - 它对
curl、wget、node等底层命令无约束力 - 如果你已连上 Remote,再往这个文件里加
"http.proxy",只能解决后续插件安装失败,救不了第一次下载 - 常见误操作:把代理地址写成
localhost—— 远程机上没有代理服务,必须填局域网可达的真实 IP(比如你 Windows 主机的192.168.1.100)
本地代理服务要开 LAN 访问,且远程能连通端口
很多代理工具(Clash for Windows、Proxifier、小蓝猫)默认只监听 127.0.0.1,这意味着只有本机程序能用;远程服务器发来的请求会被直接拒绝。
- Clash 用户:确认配置文件中有
allow-lan: true,且external-controller和mixed-port绑定的是0.0.0.0或具体局域网 IP,不是127.0.0.1 - Windows 防火墙必须放行代理端口(如
7890),否则远程curl会直接 timeout - 验证方式(在远程服务器上执行):
curl -x http://192.168.1.100:7890 https://httpbin.org/ip。能返回真实出口 IP,说明通了 - 别用
localhost或127.0.0.1代替真实局域网 IP——远程机的127.0.0.1指向它自己,不是你的代理机
证书错误(DEPTH_ZERO_SELF_SIGNED_CERT)怎么处理
如果代理用的是自签名证书(Charles、Fiddler、旧版 mitmproxy 或某些企业中间人设备),远程服务器上的 curl 或 wget 会因 SSL 校验失败而中断下载。
- 临时方案(不推荐长期用):
curl -k -x http://192.168.1.100:7890 https://httpbin.org/ip测试是否为证书问题 - 根本解法:在远程机上信任代理的根证书。Linux 下通常要把 CA 证书放进
/usr/local/share/ca-certificates/,再运行sudo update-ca-certificates - VSCode 自身的
http.proxyStrictSSL对远程下载无效——那是给vscode-server进程用的,不是给 shell 下载脚本用的 - 如果无法导入证书,可改用 HTTP 代理(非 HTTPS),或换用 Clash/Surge 等标准代理,它们一般用上游真实证书中转,不触发自签问题
真正卡点永远在远程机那一端:它得能发出请求、能连上你的代理、能过 SSL、能被你的代理正确转发。本地 VSCode 的任何设置都只是“旁观者”,别在错误的地方反复调试。











