资讯动态

VS Code 新旧版本 Remote-SSH 内网离线连接服务器方法(版本 ≤ 1.78.x 及 ≥ 1.79.0)

发布时间:2026/10/30 4:07:50 来源:尧图企业网站定制
文章目录前言版本概览目录结构远端模型迭代部署方法旧版版本 ≤ 1.78.x1. 问题描述2. 原理说明3. 离线部署步骤新版版本 ≥ 1.79.01. 目录结构变化2. 全局设置调整3. 离线部署步骤常见问题 排查总结与建议前言公司出于代码安全考虑所有服务器均处于内网、无法直接访问互联网同时我们仍需使用 VS Code 的 Remote‑SSH 功能连接到这些代码服务器。下面将分别介绍 VS Code 旧版≤ 1.78.x和新版≥ 1.79.0在内网离线环境下部署vscode-server的完整流程并补充了常见问题排查与优化建议。版本概览版本和Commit 号可以在VS Code → Help → About上查看。目录结构远端旧版≤ 1.78.x~/.vscode-server/ └── bin/ └── COMMIT_ID/ ├── server.tar.gz ├── 0 └── … # 其他解压后的文件新版≥ 1.79.0~/.vscode-server/ ├── cli/ │ └── servers/ │ └── Stable-COMMIT_ID/ │ └── server/ │ └── … # 所有 server 文件 ├── vscode-cli-COMMIT_ID.tar.gz └── vscode-cli-COMMIT_ID.tar.gz.done模型迭代旧模型v1.78 及之前拆分成主程序 CLI 两个包解压后都落在 ~/.vscode-server/bin//…其中包含 bin/、server.sh 等文件夹和脚本。新模型v1.79–v1.88 过渡至 v1.88 稳定主程序与 CLI 合并为一个扁平化包更快。解压后直接在 ~/.vscode-server/ 根目录放置 code-单可执行文件和 cli/ 子目录无再嵌套 bin/ 目录。部署方法首先在 VS Code 上安装Remote‑SSH插件点击左侧Remote Explorer。若远端服务器能上网通常能直接连上使用。下面说的是离线部署解决远端不能上网VS Code 连不上的情况。旧版版本 ≤ 1.78.x1. 问题描述错误提示Resolver error: Error: XHR failedscode远程会生成一个~/.vscode-server/bin/COMMIT_ID/目录但下面*.tar.gz文件大小为 0。2. 原理说明VS Code 客户端通过 Remote‑SSH 模块向远程发起连接。远程执行脚本创建~/.vscode-server/bin/COMMIT_ID/并尝试用wget下载服务器组件。无网环境下wget会下载一个 0 字节的占位文件。客户端认为已经下载完毕跳过后续流程导致连接失败。3. 离线部署步骤# 假设 COMMIT_ID3b8xxxxxxxCOMMIT3b8xxxxxxx# 1. 本地下载有网环境# https://update.code.visualstudio.com/commit:COMMIT/server-linux-x64/stable# 或 server-win32-x64、其他架构包wget-Ovscode-server-linux-x64.tar.gz\https://update.code.visualstudio.com/commit:${COMMIT}/server-linux-x64/stable# 2. 上传到远程scpvscode-server-linux-x64.tar.gz userremote:${REMOTE_DIR}/# 3. ssh到远程执行cd~/.vscode-server/bin/${COMMIT}tarzxvf vscode-server-linux-x64.tar.gz--strip1# 标记部署完成touch~/.vscode-server/bin/${commit_id}/0# 删除锁文件若存在rm-fvscode-remote-lock.*Tip:删除vscode-remote-lock.*文件可避免死锁导致的反复输入密码。新版版本 ≥ 1.79.01. 目录结构变化新版将bin/COMMIT目录拆分为两部分Server~/.vscode-server/cli/servers/Stable-COMMIT/serverCLI~/.vscode-server/vscode-cli-COMMIT.tar.gz{,.done}2. 全局设置调整为了阻止远程主机自动wget需将下载策略改为“始终本地下载”打开或新建 VS Code 用户设置文件Windows%APPDATA%\Code\User\settings.jsonLinux/macOS~/.config/Code/User/settings.json添加以下配置{ remote.SSH.localServerDownload: always }此时Remote‑SSH 会跳过远程wget始终在本地下载.tar.gz并通过 SCP 上传。VS Code 会在本地client 端先准备好 Remote Server 所需的 VS Code Server 文件然后通过 SSH 传输到远程服务器remote 端上去执行。如果客户端有网能用这个方法连上也再好不过了重启 VS Code 生效。3. 离线部署步骤这里就是客户端和远程端都无网的情况了上面第②步依然要操作否则连接时依旧会从远程端 wget 去下载一些所需的压缩包把本地的给覆盖了。# 以 COMMIT19e... 为例COMMIT19e...# 本地下载 Server CLI 包wget-Ovscode-server-linux-x64.tar.gz\https://update.code.visualstudio.com/commit:${COMMIT}/server-linux-x64/stablewget-Ovscode-cli-alpine-x64.tar.gz\https://update.code.visualstudio.com/commit:${COMMIT}/cli-alpine-x64/stable# 上传到远程scpvscode-server-linux-x64.tar.gz vscode-cli-alpine-x64.tar.gz userremote:~# 在远程执行sshuserremote# 1. 创建新版 Server 目录mkdir-p~/.vscode-server/cli/servers/Stable-${COMMIT}/server# 2. 解压 Server 包去顶层目录tar-xzf~/vscode-server-linux-x64.tar.gz\--strip-components1\-C~/.vscode-server/cli/servers/Stable-${COMMIT}/server# 3. 部署 CLI 包并标记cp~/vscode-cli-alpine-x64.tar.gz\~/.vscode-server/vscode-cli-${COMMIT}.tar.gzcp~/vscode-cli-alpine-x64.tar.gz\~/.vscode-server/vscode-cli-${COMMIT}.tar.gz.done然后重启重新连接。常见问题 排查仍提示下载失败 / 0 字节确认remote.SSH.localServerDownload已设为always清空远程缓存rm -rf ~/.vscode-server/*重新部署。权限不足检查远程目录权限chmod -R urwx ~/.vscode-server若使用非默认路径确保~/.config/Code/User/settings.json中的 SSH 配置指向正确主机。SSH 连接卡在“Installing VS Code Server”可在设置中启用remote.SSH.showLoginTerminal查看详细日志手动在远程执行~/.vscode-server/bin/COMMIT/server.sh看输出。版本不匹配确认本地 VS Code 帮助 ⇒ 关于 中的 Commit 与上传包一致如误上传了错误架构包请重新下载对应平台 tar.gz。总结与建议旧版容器简单直接将vscode-server解压到bin/COMMIT并标记touch 0即可新版目录更清晰但需额外上传 CLI 包并调整下载策略强烈建议统一使用remote.SSH.localServerDownload: always将下载逻辑完全交由本地避免覆盖问题在脚本中可加入判断和自动上传逻辑进一步简化日常运维流程。这个新版 VS Code Remove-SSH 很坑的正常情况一个环境部署流程会检验一份文件是否需要存在再决定 wget 下载这里不验证直接就帮我把它 wget 覆盖成一份 0 字节的文件没连外网很明显这逻辑就是有漏洞的也不确定是我下的版本v1.100刚好有问题也不确定后面是否会修复上面也是部署过程中 debug 了很多次才试出的方法.

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑