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

news/2025/11/26 20:04:22/文章来源:https://www.cnblogs.com/tlnshuju/p/19274493

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

2025-11-26 20:01  tlnshuju  阅读(0)  评论(0)    收藏  举报

文章目录

  • 前言
  • 版本概览
    • 目录结构(远端)
    • 模型迭代
  • 部署方法
    • 旧版(版本 ≤ 1.78.x)
      • 1. 问题描述
      • 2. 原理说明
      • 3. 离线部署步骤
    • 新版(版本 ≥ 1.79.0)
      • 1. 目录结构变化
      • 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/└── /├── server.tar.gz├── 0└── …  # 其他解压后的文件
  • 新版(≥ 1.79.0)

    ~/.vscode-server/├── cli/│   └── servers/│       └── Stable-/│           └── server/│               └── …  # 所有 server 文件├── vscode-cli-.tar.gz└── vscode-cli-.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.x)

1. 问题描述

2. 原理说明

  1. VS Code 客户端通过 Remote‑SSH 模块向远程发起连接。
  2. 远程执行脚本:创建 ~/.vscode-server/bin/<COMMIT_ID>/,并尝试用 wget 下载服务器组件。
  3. 无网环境下,wget 会下载一个 0 字节的占位文件。
  4. 客户端认为已经下载完毕,跳过后续流程,导致连接失败。

3. 离线部署步骤

# 假设 COMMIT_ID=3b8xxxxxxx
COMMIT=3b8xxxxxxx
# 1. 本地下载(有网环境):
#    https://update.code.visualstudio.com/commit:<COMMIT>/server-linux-x64/stable#    或 server-win32-x64、其他架构包wget -O vscode-server-linux-x64.tar.gz \"https://update.code.visualstudio.com/commit:${COMMIT}/server-linux-x64/stable"# 2. 上传到远程:scp vscode-server-linux-x64.tar.gz user@remote:${REMOTE_DIR}/# 3. ssh到远程执行:cd ~/.vscode-server/bin/${COMMIT}tar zxvf vscode-server-linux-x64.tar.gz --strip 1# 标记部署完成touch ~/.vscode-server/bin/${commit_id}/0# 删除锁文件(若存在)rm -f vscode-remote-lock.*

Tip: 删除 vscode-remote-lock.* 文件可避免死锁导致的反复输入密码。


新版(版本 ≥ 1.79.0)

1. 目录结构变化

新版将 bin/<COMMIT> 目录拆分为两部分:

2. 全局设置调整

为了阻止远程主机自动 wget,需将下载策略改为“始终本地下载”:

  1. 打开或新建 VS Code 用户设置文件:

    • Windows%APPDATA%\Code\User\settings.json
    • Linux/macOS~/.config/Code/User/settings.json
  2. 添加以下配置:

    {"remote.SSH.localServerDownload": "always"
    }

此时,Remote‑SSH 会跳过远程 wget,始终在本地下载 .tar.gz 并通过 SCP 上传。

VS Code 会在本地(client 端)先准备好 Remote Server 所需的 VS Code Server 文件,然后通过 SSH 传输到远程服务器(remote 端)上去执行。
如果客户端有网,能用这个方法连上也再好不过了

重启 VS Code 生效。

3. 离线部署步骤

这里就是客户端和远程端都无网的情况了,上面第②步依然要操作,否则连接时依旧会从远程端 wget 去下载一些所需的压缩包,把本地的给覆盖了。

# 以 COMMIT=19e... 为例
COMMIT=19e...
# 本地下载 Server & CLI 包
wget -O vscode-server-linux-x64.tar.gz \
"https://update.code.visualstudio.com/commit:${COMMIT}/server-linux-x64/stable"
wget -O vscode-cli-alpine-x64.tar.gz \
"https://update.code.visualstudio.com/commit:${COMMIT}/cli-alpine-x64/stable"
# 上传到远程
scp vscode-server-linux-x64.tar.gz vscode-cli-alpine-x64.tar.gz user@remote:~
# 在远程执行
ssh user@remote
# 1. 创建新版 Server 目录
mkdir -p ~/.vscode-server/cli/servers/Stable-${COMMIT}/server
# 2. 解压 Server 包(去顶层目录)
tar -xzf ~/vscode-server-linux-x64.tar.gz \
--strip-components=1 \
-C ~/.vscode-server/cli/servers/Stable-${COMMIT}/server
# 3. 部署 CLI 包并标记
cp ~/vscode-cli-alpine-x64.tar.gz \
~/.vscode-server/vscode-cli-${COMMIT}.tar.gz
cp ~/vscode-cli-alpine-x64.tar.gz \
~/.vscode-server/vscode-cli-${COMMIT}.tar.gz.done

然后重启重新连接。


常见问题 & 排查

  1. 仍提示下载失败 / 0 字节

    • 确认 remote.SSH.localServerDownload 已设为 "always"
    • 清空远程缓存:rm -rf ~/.vscode-server/*,重新部署。
  2. 权限不足

    • 检查远程目录权限:chmod -R u+rwx ~/.vscode-server
    • 若使用非默认路径,确保 ~/.config/Code/User/settings.json 中的 SSH 配置指向正确主机。
  3. SSH 连接卡在“Installing VS Code Server”

    • 可在设置中启用 remote.SSH.showLoginTerminal,查看详细日志;
    • 手动在远程执行 ~/.vscode-server/bin/<COMMIT>/server.sh 看输出。
  4. 版本不匹配

    • 确认本地 VS Code 帮助 ⇒ 关于 中的 Commit 与上传包一致;
    • 如误上传了错误架构包,请重新下载对应平台 tar.gz。

总结与建议

这个新版 VS Code Remove-SSH 很坑的,正常情况一个环境部署流程会检验一份文件是否需要存在再决定 wget 下载,这里不验证直接就帮我把它 wget 覆盖成一份 0 字节的文件(没连外网),很明显这逻辑就是有漏洞的,也不确定是我下的版本(v1.100)刚好有问题,也不确定后面是否会修复,上面也是部署过程中 debug 了很多次才试出的方法.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/977599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

44(11.24)

上了统一建模语言,上了数据结构,上了Java课

47(11.27)

上了数据结构,上了排球课

46(11.26)

上了离散数学,上了马原

45(11.25)

上了工程实训,上了英语视听说

Python模块与包完全教程:从导入到封装发布(附实战)

模块(Module)和包(Package)是Python代码组织与复用的核心机制——模块让你告别“复制粘贴代码”,包让你能系统化管理多个模块。本文从零基础视角出发,详解模块的导入、自定义、包的创建与使用,甚至延伸到包的封…

29(11.3)

上了Java课,受益匪浅

[豪の算法奇妙冒险] 代码随想录算法训练营第八天 | 344-反转字符串、541-反转字符串II、Carl54-替换数字

LeetCode344 反转字符串、LeetCode541 反转字符串II、Carl54 替换数字代码随想录算法训练营第八天 | 344-反转字符串、541-反转字符串II、Carl54-替换数字LeetCode344 反转字符串题目链接:https://leetcode.cn/proble…

【Webpack连载一】入门简介。了解为什么需要Webpack,解决哪些开发中通病 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

31(11.5)

上了离散数学,上了马原

26 10.29

学习打游戏跑步

深入解析:GitLab 钩子 + Jenkins 自动化构建项目

深入解析:GitLab 钩子 + Jenkins 自动化构建项目pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas",…

27.10.30

上了数据结构课程,上了体育课

抖音a_bogus,mstoken全参数爬虫逆向补环境2024-06-15

抖音a_bogus,mstoken全参数爬虫逆向补环境2024-06-15https://www.cnblogs.com/dy9527/p/19057109

深度学习50问

深度学习50问 一、深度学习基础(数学与本质)为什么深度神经网络具有“通用逼近能力”?它的局限性是什么? 深度模型为什么能泛化?泛化从何而来?为什么过参数化反而更容易泛化? 解释一下梯度消失与梯度爆炸的数学…

借助gdb推进修改oracle scn

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年11月红外防潮系统,碳红外防潮取暖系统,别墅红外防潮系统厂家推荐:实力防潮品牌解析,采购无忧之选!

2025年11月:碳红外防潮取暖系统,别墅防潮之优质之选在别墅居住体验中,防潮问题一直是困扰众多业主的难题。尤其是在一些气候湿润的地区,别墅地下室等空间容易出现潮湿发霉的情况,不仅影响房屋的美观和使用寿命,还…

2025年11月天津防潮公司,北京别墅地下室防潮公司,上海防潮公司权威推荐,防潮技术与市场口碑深度解析

2025 年 11 月天津、北京、上海防潮公司权威推荐:防潮技术与市场口碑深度解析在天津、北京、上海这样的城市,防潮需求一直存在,尤其是北京的别墅地下室,防潮工作显得尤为重要。今天要为大家深度解析的是北京碳红外…

50048_基于微信小程序的人事管理系统

1.项目包含 项目源码、项目文档、数据库脚本、软件工具等资料; 带你从零开始部署运行本套系统。 2.项目介绍 使用旧方法对人事管理系统的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在人事管理…

树状数组 线段树 笔记

写于 2023.11 树状数组 树状数组是维护 \(n\) 个数的前缀信息的一维数组。 其树型结构如下这样的结构有着写法简单,常数小的特点。 其模板代码如下: inline int lowbit(const int &x){//最后一个 1 对应的值 ret…

二分答案 序列划分

1.函数的返回和可行区应该是一样的 2.可行区选择与题目所求相同 右侧:最小化答案(如本题:寻找数字之和最大的段落最小的值) 左侧:最大化答案 #include <bits/stdc++.h> using namespace std; int n,m; vect…