VSCode Remote SSH扩展vscode-server手动安装失败求助
问题场景
Windows环境下使用VSCode,已安装Remote SSH扩展,需连接带GPU的Ubuntu 24.04服务器(IP:192.168.1.9,端口22222)运行调试Python代码。通过Remote SSH连接时,自动安装vscode-server长期卡在:
Waiting for vscode-scp-done.flag and vscode-server.tar.gz to exist
服务器~/.vscode-server目录无任何文件生成,因无权限排查防火墙或杀毒软件问题,尝试手动安装vscode-server,在服务器执行以下命令:
wget -c https://update.code.visualstudio.com/commit:cd4ee3b1c348a13bafd8f9ad8060705f6d4b9cba/server-linux-x64/stable -O vscode-server-linux-x64.tar.gz mkdir -p ~/.vscode-server touch ~/.vscode-server/bin/cd4ee3b1c348a13bafd8f9ad8060705f6d4b9cba.0 touch ~/.vscode-server/vscode-cli-cd4ee3b1c348a13bafd8f9ad8060705f6d4b9cba.tar.gz.done
将下载的vscode-server-linux-x64.tar.gz解压至~/.vscode-server/bin/cd4ee3b1c348a13bafd8f9ad8060705f6d4b9cba目录,最终该目录结构如下:
ll ~/.vscode-server/bin/cd4ee3b1c348a13bafd8f9ad8060705f6d4b9cba total 96220 drwxrwxr-x 6 user1 user1 4096 mai 15 14:33 ./ drwxrwxr-x 3 user1 user1 4096 mai 15 14:28 ../ -rw-rw-r-- 1 user1 user1 0 mai 15 14:29 0 drwxr-xr-x 4 user1 user1 4096 janv. 16 01:13 bin/ drwxr-xr-x 35 user1 user1 4096 janv. 16 01:13 extensions/ -rw-r--r-- 1 user1 user1 13380 janv. 16 01:12 LICENSE -rwxr-xr-x 1 user1 user1 98426952 janv. 16 01:13 node* drwxr-xr-x 96 user1 user1 4096 janv. 16 01:13 node_modules/ drwxr-xr-x 3 user1 user1 4096 janv. 16 01:13 out/ -rw-rw-r-- 1 user1 user1 267 janv. 16 01:00 package.json -rw-rw-r-- 1 user1 user1 52411 janv. 16 01:12 product.json
但再次启动VSCode并通过Remote SSH连接时,仍尝试重新复制并安装vscode-server,尝试过第三方手动安装脚本也无效果。
测试发现
在本地创建Ubuntu Docker容器,通过Remote SSH扩展自动完成vscode-server安装后,容器中.vscode-server目录结构与手动安装的完全不同:
./ ../ .cli.cd4ee3b1c348a13bafd8f9ad8060705f6d4b9cba.log cli/ code-cd4ee3b1c348a13bafd8f9ad8060705f6d4b9cba* data/ extensions/
推测可能是下载的安装包不正确,最终通过修复SCP问题让VSCode自动安装成功,现咨询手动安装失败的原因及正确配置方法。
回答
手动安装失败的核心原因
- 目录结构不匹配:手动创建的
~/.vscode-server/bin/<commit-id>目录结构是旧版vscode-server布局,而新版(对应commit-idcd4ee3b1...)采用扁平化目录结构,不再用bin子目录存放核心文件,VSCode因找不到预期的code-<commit-id>可执行文件,触发重新安装。 - 标记文件规则不符:创建的
vscode-cli-<commit-id>.tar.gz.done和bin/<commit-id>.0标记文件,不符合新版的命名与存放规则,VSCode无法识别,判定安装未完成。 - 解压路径错误:下载的压缩包内部自带一层
vscode-server-linux-x64目录,手动解压时未去除该层级,导致核心文件嵌套过深,VSCode无法读取。
正确的手动安装步骤
针对VSCode新版(commit-id cd4ee3b1c348a13bafd8f9ad8060705f6d4b9cba),手动安装需按以下步骤执行:
- 确认本地VSCode的commit-id:在本地VSCode按
Ctrl+Shift+P打开命令面板,输入About Visual Studio Code,复制Commit对应的字符串(即cd4ee3b1...)。 - 在服务器创建目标目录:
将mkdir -p ~/.vscode-server/bin/<commit-id><commit-id>替换为实际的commit字符串。 - 下载对应版本的安装包:
wget -c https://update.code.visualstudio.com/commit:<commit-id>/server-linux-x64/stable -O vscode-server.tar.gz - 正确解压到目标路径:使用
--strip-components=1参数去除压缩包内部的层级目录,直接将核心文件解压到目标目录:tar -xzf vscode-server.tar.gz --strip-components=1 -C ~/.vscode-server/bin/<commit-id> - 创建必要的标记文件:
- 在
~/.vscode-server目录下创建lockfile,写入commit-id:echo "<commit-id>" > ~/.vscode-server/lockfile - 在目标bin目录下创建空文件
0:touch ~/.vscode-server/bin/<commit-id>/0
- 在
- 验证目录结构:确保
~/.vscode-server/bin/<commit-id>下直接包含bin、extensions、code等核心文件,层级与Docker自动安装的结构一致。 - 重启VSCode连接:关闭本地VSCode后重新打开,通过Remote SSH连接服务器,VSCode会识别到已安装的vscode-server,无需重复安装。
内容的提问来源于stack exchange,提问作者ltu

