VS Code 本身不能直接在无GUI的Linux服务器上用命令行安装;远程开发需部署 vscode-server(离线时须严格匹配Commit ID、解压路径和700权限)或独立运行 code-server(推荐一键脚本安装)。

直接在服务器上用命令行安装 VSCode 本身不可行——VSCode 是桌面应用,没有 Linux 服务器原生的 deb/rpm 包供常规命令行安装(除非你装的是 GUI 环境+X11 转发,但那不是“远程开发”的本意)。你真正要装的是能在服务器上运行、供本地 VSCode 连接的后端服务,即 vscode-server(由 Remote-SSH 插件自动拉取)或独立的 code-server。两者定位不同,选错会导致连接失败、插件不工作、甚至卡死在“正在下载服务器”界面。
Remote-SSH 场景下:手动部署 vscode-server(离线/超时/无外网)
这是最常被卡住的环节:本地 VSCode 点 Connect 后,远程服务器反复尝试下载 vscode-server-linux-x64.tar.gz,但服务器没外网,或 DNS/代理/防火墙拦截导致 XHR Failed 或 timeout。
- 必须先从本地 VSCode 的 Help → About 里抄到准确的
Commit ID(例如dc96b837cf6bb4af9cd736aa3af08cf8279f7685),不能用版本号代替 - 在能联网的机器上拼 URL 下载两个文件:
https://vscode.download.prss.microsoft.com/dbazure/download/stable/${commit_id}/vscode-server-linux-x64.tar.gzhttps://vscode.download.prss.microsoft.com/dbazure/download/stable/${commit_id}/vscode_cli_alpine_x64_cli.tar.gz - 上传到服务器后,解压路径必须严格匹配:
mkdir -p ~/.vscode-server/cli/servers/Stable-${commit_id}/servertar -zxf vscode-server-linux-x64.tar.gz -C ~/.vscode-server/cli/servers/Stable-${commit_id}/server --strip-components=1 -
vscode_cli_alpine_x64_cli.tar.gz解出来是code可执行文件,要放到~/.vscode-server/code-${commit_id},不是bin/子目录 - 权限必须是
700:chmod -R 700 ~/.vscode-server,否则 Remote-SSH 拒绝加载
独立部署 code-server(无需本地 VSCode,纯浏览器访问)
如果你只要一个能用浏览器打开的 VSCode 界面,code-server 是更干净的选择。它和 VSCode 官方代码同源,但自包含、无依赖、不走微软 CDN。
- 推荐用官方脚本一键装:
curl -fsSL https://code-server.dev/install.sh | sh;它会自动检测系统并选最佳方式(apt/yum/standalone) - 若需指定版本(比如解决 C/C++ 插件崩溃问题),加
--version=4.135.0参数;加--prefix=/usr/local可全局安装 - 启动前务必确认端口未被占用:
code-server --bind-addr 0.0.0.0:8080;默认只监听127.0.0.1,外网连不上 - 密码存在
~/.config/code-server/config.yaml里,首次启动会打印在终端;改完配置要killall code-server再重启 - systemd 服务中
User=必须填实际用户名,不能写root(除非你真用 root 启动),否则ExecStart权限失败
为什么 vsix 插件在远程环境里装不上?
Remote-SSH 模式下,插件分“本地端”和“服务器端”两部分。你在本地点安装,VSCode 默认只装前端 UI,后端逻辑(如 C/C++ 的 cpptools-server)需要服务器有对应二进制且能联网下载——这正是离线场景最常崩的地方。
- 手动装插件必须传
.vsix到服务器,再用命令行安装:code-server --install-extension /path/to/cpptools-1.19.0.vsix - 但很多插件(尤其是含 native binary 的)要求服务器架构匹配(x64/arm64)、glibc 版本 ≥2.28、且已装
build-essential和gdb - 更稳妥的做法是:在
code-server配置里换源,把extensionsGallery指向国内镜像(如清华源),避免插件市场请求超时 - 别碰
remote.SSH.enableDynamicForwarding这类高级选项——它会让 SSH 隧道行为异常,反而导致插件更新静默失败
真正的难点不在“怎么敲命令”,而在于 Commit ID、路径结构、权限模型、插件二进制兼容性这四者的咬合——漏一个,整个远程开发链路就断在看不见的地方。


















