根本原因是远程服务器上 vscode-server 启动时直连失败,不继承本地代理或环境变量;需离线部署对应 Commit ID 的 server 压缩包至 ~/.vscode-server/bin/<commit-id> 并设正确权限,或配置远程端 settings.json 代理。

VS Code Remote-SSH 连接时提示“无法下载 VS Code 服务器”,根本原因不是插件没装好,而是远程服务器上 vscode-server 启动时尝试联网拉取二进制包失败——它不走本地代理设置,也不继承 shell 环境变量,必须显式配置代理或直接离线部署。
vscode-server 报 ECONNREFUSED 或 timeout 的真实来源
这个错误和你本地 VS Code 版本、扩展是否安装无关。只要远程服务器执行 curl -I https://marketplace.visualstudio.com 返回连接失败,就说明 vscode-server 启动后第一件事(下载或校验 server 二进制)就被卡死。
- Remote-SSH 插件本身只是“信使”,真正干活的是远程服务器上运行的
vscode-server进程 - 该进程默认直连
update.code.visualstudio.com和marketplace.visualstudio.com,不读取 VS Code 客户端的http.proxy设置 - 企业防火墙、无外网环境、DNS 不可达、SSL 中间人拦截,都会导致它卡在 “Downloading VS Code Server” 阶段
离线部署 vscode-server 的完整路径
不能只传 .vsix,也不能指望“装完 Remote-SSH 插件就自动带 server”。你必须手动把对应版本的 vscode-server 压缩包放到远程服务器指定位置,并确保目录结构和权限正确。
- 先在本地查清版本:打开 VS Code,按
Ctrl+Shift+P输入Remote-SSH: Show Log,日志里会显示类似Downloading VS Code Server version: 1.85.2 - 去官网下载对应压缩包:
https://update.code.visualstudio.com/commit:<hash>/server-linux-x64/stable</hash>(Linux)或.../server-win32-x64/stable(Windows Server),其中<hash></hash>是 VS Code 关于页里显示的 Commit ID(如7d12793a0b7103e8f83234c779b4a37484b15832) - 解压后得到
vscode-server目录,把它整个复制到远程服务器的~/.vscode-server/bin/<hash>/</hash>(注意:<hash></hash>必须和本地 Commit ID 完全一致) - 确保远程目录权限为用户可读可执行:
chmod -R u+rx ~/.vscode-server/bin/<hash>/</hash>
Remote-SSH 插件离线安装仍需同步处理
Remote-SSH 插件本身是 VS Code 扩展,但它的作用只是触发远程连接;它不包含 vscode-server。所以即使你用 code --install-extension 离线装了 ms-vscode-remote.remote-ssh,远程 server 还是得单独部署。
- 插件 .vsix 必须和本地 VS Code 版本兼容(检查其
package.json中"engines": {"vscode": "^1.85.0"}) - 不要漏掉依赖扩展:
ms-vscode-remote.remote-ssh-edit(如果要用code .远程编辑)、ms-vscode-remote.remote-explorer(资源管理器支持) - 装完插件后,首次连接仍会尝试下载 server——此时若已提前放好
~/.vscode-server/bin/<hash>/</hash>,它会跳过下载直接启动
代理配置仅对联网场景有效,且必须写对位置
如果你不是完全离线,而是有受限代理,那 vscode-server 的代理配置和 VS Code 客户端互不干扰,必须单独设。
- 配置文件路径是远程服务器上的:
~/.vscode-server/data/Machine/settings.json(不是~/.vscode-server/data/User/settings.json) - 内容必须是纯 JSON:
{"http.proxy":"http://proxy:8080","http.proxyStrictSSL":false} - 改完必须彻底断开 Remote 连接(不是 reload window),再重连才会生效;
vscode-server只在启动时读一次这个文件 - 代理地址含用户名密码?要 URL 编码,比如
user:p@ss→user:p%40ss
最易被忽略的一点:vscode-server 的 bin/<hash>/</hash> 目录名必须和本地 VS Code 的 Commit ID 逐字符一致,大小写、长度、符号都不能差——否则它会无视已存在的目录,坚持重新下载。


















