离线安装vscode需同步解决三件事:本体版本可控、插件与版本严格匹配、远程/语言服务二进制落地;必须依据code --version第二行commit id(如6c3e3dfa...)获取对应vscode-server包、校验插件engines.vscode字段、手动解压server至~/.vscode-server/bin/{commit}/并确保可执行。

离线安装 VSCode 环境不是“把几个文件拷过去就行”,而是必须同步解决三件事:VSCode 本体版本可控、插件与版本严格匹配、远程/语言服务二进制能落地。缺一环,就会卡在“安装成功但没功能”或“连接失败无报错”。
确认本地 VSCode 版本并锁定 commit ID
Remote-SSH 和 vscode-server 的兼容性完全取决于这个 commit ID,不是主版本号(如 1.85.0),而是 code --version 输出的第二行哈希值,例如 6c3e3dfa918054a21972e0b53830d1f11051134e。这个值决定了你要下载的 vscode-server 包、某些插件的 native 二进制、甚至 LSP 启动参数。
- 在有网机器上打开 VSCode,按
Ctrl+Shift+P输入Developer: Download Built-in Extensions,触发一次远程服务端拉取,它会把对应 commit 的vscode-server缓存到本地 - Windows 路径:
%USERPROFILE%\AppData\Roaming\Code\Remote\dist\;macOS:~/Library/Application Support/Code/Remote/dist/;Linux:~/.config/Code/Remote/dist/ - 找到形如
6c3e3dfa918054a21972e0b53830d1f11051134e.tar.gz的文件,这就是你内网服务器唯一能用的 server 包
下载插件时必须校验 engines.vscode 字段
插件 .vsix 文件本质是 zip,里面 package.json 的 "engines": {"vscode": "^1.85.0"} 是硬门槛。你的离线机 VSCode 版本低于 1.85.0,插件就静默拒绝——连错误都不报。
- 用
unzip -p plugin.vsix package.json | grep engines(Linux/macOS)或 7-Zip 打开查看字段 - 运行
code --version确认本地版本,注意小数点后两位(如 1.84.2 不满足^1.85.0) - 不兼容时别改
package.json:VSCode 1.70+ 默认校验签名,篡改后提示Signature verification failed - 去 Marketplace 的
/versionhistory页面手动选旧版下载,比如https://marketplace.visualstudio.com/items/ms-python.python/versionhistory
离线安装插件必须用命令行或拖拽,禁用图形界面安装
VSCode 扩展面板的 “Install from VSIX” 在断网时会静默失败,因为它依赖后台服务做签名校验和解压调度。GUI 拖拽和 code --install-extension 才是官方支持的离线路径。
- 拖拽方式最稳:VSCode 必须已启动、有焦点、加载了任意工作区(哪怕空文件夹),把未解压的
.vsix直接拖进编辑区中央,松手弹框即装 - 命令行方式适合排障:路径必须是绝对路径,Windows 含空格需双引号,如
code --install-extension "C:\ext\ms-python.python-2024.6.0.vsix" - 若提示
command not found: code,在 VSCode 中按Ctrl+Shift+P运行Shell Command: Install 'code' command in PATH - 装完插件默认禁用,必须手动启用或重启 VSCode;语言类插件(如 Python)首次启用还会尝试下载 LSP,离线会卡住,需提前在有网机上完整触发并拷贝整个扩展目录
vscode-server 必须手动解压到指定哈希路径
Remote-SSH 连接时卡在 “Installing VS Code Server”,根本不是网络问题,而是客户端根本没把 server 二进制送到目标机。离线环境下,你得自己把它放对位置、解压、权限到位。
- 目标路径必须是:
~/.vscode-server/bin/<code>6c3e3dfa918054a21972e0b53830d1f11051134e/(哈希值必须一字不差) - 解压命令要带
-C指定父目录:tar -xzf 6c3e3dfa918054a21972e0b53830d1f11051134e.tar.gz -C ~/.vscode-server/bin/ - 检查
~/.vscode-server/bin/<code>6c3e3dfa918054a21972e0b53830d1f11051134e/bin/code-server是否存在且可执行(chmod +x必要时) - 目标机若缺
glibc或node,会报cannot execute binary file或GLIBC_2.28 not found:vscode-server 自带 node,但 fallback 到系统 node,建议离线部署前先确认基础环境
最难被意识到的一点是:很多插件(尤其是带 native 二进制的)只装 .vsix 是注册前端,真正干活的 LSP 服务(如 pyright、volar-server)需要首次启用时下载。离线环境下,必须在有网机上完整走通一次,再把整个扩展目录(含 node_modules 和二进制)原样拷过去,否则永远停在 “Downloading…”。











