需手动将与本地vscode版本完全匹配的vscode-server压缩包(含对应commit id)拷贝至目标机~/.vscode-server/bin/下指定哈希目录并解压,确保glibc、node及ssh终端支持均满足要求。

Remote-SSH服务端没联网,vscode-server怎么装到目标机器上?
离线服务器没法自动下载 vscode-server,VSCode Remote-SSH 连接时会卡在“Installing VS Code Server”并报错 Failed to fetch。核心不是“连不上”,而是客户端根本没把服务端二进制文件送过去。
- 别指望
ssh连上去再手动curl—— 离线环境连curl都可能没装,更别说证书和域名解析 - 必须提前把对应平台的
vscode-server压缩包(tar.gz)拷到目标机器,并解压到~/.vscode-server/bin/下指定哈希目录里 - 哈希值不能瞎写:它来自你本地 VSCode 桌面版的当前 commit ID,可在 VSCode 关于窗口或
code --version第二行看到,例如6c3e3dfa918054a21972e0b53830d1f11051134e - 路径结构必须是:
~/.vscode-server/bin/<code>6c3e3dfa918054a21972e0b53830d1f11051134e/,里面要有bin/code-server和server.js等文件
怎么拿到和本地 VSCode 完全匹配的 vscode-server 包?
从官网下载的通用包不保证兼容——VSCode 桌面版每次更新,vscode-server 的 ABI、协议版本、甚至启动参数都可能变。离线部署必须“版本钉死”。
- 最稳方式:在一台能联网、且安装了**完全相同 VSCode 版本**的机器上,打开命令面板(
Ctrl+Shift+P),运行Developer: Download Built-in Extensions—— 这会触发 VSCode 主动拉取一次服务端包,缓存在本地临时目录 - Windows 缓存路径:
%USERPROFILE%\AppData\Roaming\Code\Remote\dist\;macOS:~/Library/Application Support/Code/Remote/dist/;Linux:~/.config/Code/Remote/dist/ - 找到以 commit ID 命名的 tar.gz 文件(如
6c3e3dfa918054a21972e0b53830d1f11051134e.tar.gz),用scp或 U 盘拷到目标服务器 - 解压命令必须带
-C指定父目录:tar -xzf 6c3e3dfa918054a21972e0b53830d1f11051134e.tar.gz -C ~/.vscode-server/bin/
目标机器缺 node 或 glibc 版本太低怎么办?
vscode-server 不是纯静态二进制,它依赖系统级 Node.js 运行时(虽然自带一份,但会 fallback 到系统 node)。离线环境常因基础依赖缺失直接报 cannot execute binary file 或 GLIBC_2.28 not found。
- 先确认目标机器架构和系统版本:
uname -m(x86_64 / aarch64)、cat /etc/os-release、ldd --version - VSCode 官方
vscode-server包默认编译目标是 glibc ≥ 2.28(对应 Ubuntu 20.04+/CentOS 8+),老系统(如 CentOS 7)必须降级使用旧版 VSCode + 对应旧包 - 如果系统没
node,不要单独装 Node.js ——vscode-server自带node在bin/子目录下,但需确保~/.vscode-server/bin/xxx/bin/在$PATH里,或修改~/.vscode-server/bin/xxx/server.sh中的NODE路径指向它
连接时仍提示 Waiting for server log... 卡住?检查这三处
包放对了、Node 有了、权限也设了,还是连不上?问题往往出在 VSCode 客户端的“静默行为”上——它不会告诉你具体哪步失败,只等日志输出。
- 手动启动服务端看报错:
cd ~/.vscode-server/bin/6c3e3dfa918054a21972e0b53830d1f11051134e && ./bin/code-server --start-server --host=127.0.0.1 --port=0 --use-host-proxy --enable-remote-auto-shutdown --print-server-id --telemetry-level off - 检查
~/.vscode-server所有者是否为当前用户(不是 root!):chown -R $USER:$USER ~/.vscode-server - 确认 SSH 配置中没禁用
TTY:VSCode Remote-SSH 默认需要伪终端,~/.ssh/config里该 Host 不能有RequestTTY no或PermitTTY no(服务端 sshd_config 也不能关)
离线部署最难的从来不是拷文件,而是版本链路断在哪一环——本地 VSCode 版本、服务端包 commit、目标系统 glibc、SSH 终端能力,四者必须咬合。少对一环,就卡在“等待日志”里,还找不到错在哪。











