vs code 远程 ssh 连接失败主因是本地与远程的 vscode-server 版本不兼容或缓存损坏,需同步删除本地(~/.vscode-server)和远程(~/.vscode-server)目录,并让插件自动重装;下载慢可换源或手动部署正确路径的 code-server;扩展失效则需修正 remote.extensionkind 为数组格式。

VS Code 远程 SSH 连接失败:Failed to fetch 或卡在“Installing VS Code Server”
这是更新后最典型的症状,本质是本地 vscode-server 二进制与远程服务器上已安装的版本不兼容,或者缓存校验失败。VS Code 不会自动覆盖旧服务端,而是尝试复用,结果因签名/哈希不匹配直接中断。
实操建议:
- 先别急着重装插件或改配置——90% 的情况跟插件无关,是服务端二进制和元数据不一致导致的
- 检查终端里真实报错:如果看到
Cannot read property 'length' of undefined或Corrupted zip file,基本锁定为缓存损坏 - VS Code 1.86+ 对
.vscode-server目录结构做了调整,旧版残留会导致新客户端拒绝连接
删哪里?只动这两个关键路径,别碰其他文件
必须同时清理两处,缺一不可:本地缓存决定“该下哪个版本”,远程目录决定“实际跑哪个版本”。只删一边,下次连接仍会拉取旧版或复用损坏包。
操作步骤:
- 本地(你的开发机)删除:
~/.vscode-server(macOS/Linux)或%USERPROFILE%\.vscode-server(Windows) - 远程(目标服务器)删除:
~/.vscode-server(注意:不是~/vscode-server或/tmp/vscode-server) - 删完立刻重启 VS Code,不要手动 ssh 登录去解压或 chmod——让 Remote-SSH 插件自己触发完整重装流程
vscode-server 下载慢 / 超时 / 返回 404?换源或手动部署
官方 CDN 在国内不稳定,VS Code 默认从 update.code.visualstudio.com 拉取,但这个域名可能被拦截或限速,表现为卡在“Downloading VS Code Server”、最终报 connect ETIMEDOUT。
可选方案:
- 临时加环境变量(仅本次连接生效):在 VS Code 的 Remote-SSH 设置里,给
remote.SSH.env加一条:"VSCODE_AGENT_FOLDER": "https://npmmirror.com/mirrors/code-server"(注意路径需对应你用的 VS Code 版本号) - 更稳的方式:手动下载
vscode-server-linux-x64.tar.gz(根据你的远程系统选),上传到服务器~/.vscode-server/bin/下对应 commit ID 目录,再chmod +x ~/.vscode-server/bin/*/bin/code-server - 别用
curl -L直接解压到根目录——code-server必须放在bin/<commit-id>/</commit-id>结构内,否则启动时报Cannot find module 'vs/server/main'
连上了但扩展全失效?检查 dev-container 和 remote.extensionKind
这不是连接问题,而是 VS Code 更新后对远程扩展加载策略收紧了。尤其当你用的是 devcontainer 或自定义 remote.extensionKind 配置,旧写法如 "ms-python.python": "workspace" 已被弃用,现在必须明确指定 "ui" 或 "workspace" 且不能混用。
常见表现:
- Python/Jupyter 扩展图标灰掉,提示 “This extension is disabled because it is not installed on the server”
- 终端里
code --list-extensions显示为空,但本地code --list-extensions --profile=...能列出 - 检查
.vscode/settings.json里有没有"remote.extensionKind",如果有,确认值是数组格式:"ms-python.python": ["workspace"],不是字符串
真正麻烦的是混合环境:比如你在 WSL2 里连物理机,又开了 devcontainer,这时候 .vscode-server 目录可能出现在三个地方——本地、WSL2 home、远程服务器 home,得一层层确认删干净。











