Remote-SSH离线连接时插件功能失效的根本原因是语言服务器及vscode-server未正确下载安装;需在有网环境触发初始化并完整拷贝扩展目录与对应版本的vscode-server二进制到内网机。

Remote-SSH 连接后插件功能失效,但状态栏显示“已连接”
这说明 vscode-server 已启动,但远程端的扩展进程(比如 Python 的 pyright、ESLint 的 eslint-language-server)根本没加载起来——离线时它们首次启用会尝试下载依赖,失败后静默退出,VSCode 不报错也不重试。
常见现象包括:Python 补全无响应、格式化按钮灰掉、输出面板里 Python 或 ESLint 通道为空或只有一行 Starting language server... 后再无日志。
- 别在远程机器上手动运行
code --install-extension:它默认调用 marketplace,离线必失败 - 必须在有网机器上完整触发一次语言服务器初始化:打开一个
.py文件 → 等状态栏出现绿色Python图标 → 此时~/.vscode-server/extensions/下对应目录里已有node_modules和可执行二进制(如pyright) - 把整个扩展文件夹(含子目录和隐藏文件)拷到内网机的
~/.vscode-server/extensions/对应路径,不是只拷.vsix - 拷完必须彻底退出 VSCode(包括右下角托盘图标),否则旧进程可能复用缓存跳过加载
点击“更新”后插件变灰、无法启用
这是 code --install-extension 在离线环境静默失败的典型表现。VSCode UI 把“安装中”状态卡住,实际命令早已因网络不可达而退出,但界面不提示。
根本原因不是权限或路径错误,而是插件 package.json 里声明的 "engines": {"vscode": "^1.85.0"} 与你本地版本不匹配,或者目标平台(如 darwin-arm64)与当前系统不符。
- 解压 .vsix(它本质是 zip),打开根目录
package.json,检查engines.vscode字段,确保你本地code --version输出的第一段(如1.87.2→ 取1.87)≥ 该值 - Windows 路径含空格或中文时,命令必须用双引号包裹:
code --install-extension "D:/ext/python-2023.8.0.vsix" - ARM Mac 上装 x64 插件会直接报
Extension is not compatible,得找带darwin-arm64标识的版本,不能只看插件名
输出面板报 Failed to fetch 或 spawn ENOENT
Failed to fetch 是语言服务器或 CLI 工具下载失败;spawn ENOENT 是已下载但二进制缺失或路径不对——两者都指向同一个问题:离线时插件没拿到它真正需要的 native 依赖。
例如 ms-python.python 插件会拉 pyright,esbenp.prettier-vscode 会拉 prettier CLI,这些都不在 .vsix 包里,而是首次启用时动态获取。
- 不要重装 .vsix:重复安装不会触发二次下载,只会覆盖已损坏的元数据
- 去有网机器的
~/.vscode/extensions/找对应插件目录,确认里面存在node_modules/.bin/pyright或类似可执行文件 - 拷贝时注意隐藏文件(如
.gitignore、.vsixmanifest)也要一起带走,某些插件靠它们判断是否已完成初始化 - 内网机若装了旧版 VSCode(如 1.72),但插件只提供 1.80+ 版本,此时需降级插件——去 GitHub release 页面找历史 tag,或用 web 版 marketplace 抓旧版下载链接
远程连接后“Downloading VS Code Server failed”反复弹窗
这是离线首次 Remote-SSH 连接必现的问题。VSCode 尝试从 update.code.visualstudio.com 下载服务端二进制,失败后弹窗,点【重试】也无效。
关键不是插件,是 vscode-server 本身没装上。它的版本由本地 VSCode 的 Commit ID 决定,不是版本号。
- 在有网机器上打开 VSCode,按
Ctrl+Shift+P输入Help: About,复制 Commit ID(一长串哈希,如5763d909d5f12fe19f215cbfdd29a91c0fa9208a) - 构造下载地址:
https://update.code.visualstudio.com/commit:5763d909d5f12fe19f215cbfdd29a91c0fa9208a/server-linux-x64/stable(平台按需替换为win32-x64或darwin-arm64) - 下载
vscode-server.tar.gz后,上传到远程机的~/.vscode-server/bin/{commit_id}/目录下 - 解压并移动内容:
tar -zxvf vscode-server.tar.gz && mv vscode-server/* .,确保bin目录下有node、code-server等可执行文件
最易被忽略的是:vscode-server 和插件扩展的 Commit ID 必须严格一致。换一个本地 VSCode 版本,就得重新下载对应 server 包——它们不是向后兼容的。


















