使用vscode的ssh功能连接远程服务器卡在Setting up SSH Host IP: Downloading VS Code Server的解决方案

使用xshell可以直接连接到远程服务器,虽然第一次连接的时候也配置了下,具体还是区分用户名密码以及端口号这些,看清了再写;

但是用vscode的ssh功能连接远程服务器卡在Setting up SSH Host IP: Downloading VS Code Server这一步,具体和kimi沟通了几轮,在我的情况中有效的步骤:

A:

VS Code SSH 插件 默认用密钥登录

如果服务器 只给密码、没给你私钥 ,就会卡在 "Downloading VS Code Server"(其实是密钥认证失败→重试→死循环)。


① 让 VS Code 弹出密码框

  1. F1Remote-SSH: Settings

  2. 找到并打勾:

    Remote.SSH: Show Login Terminal

  3. 重新连接,VS Code 会在下方 TERMINAL 里让你输密码 (不是弹窗)。

    输完即继续。

由于输入密码也没解决,又问:我关了重启vscode还是Setting up SSH Host IP: Downloading VS Code Server的状态

A:

VS Code SSH 重启后仍卡在 Downloading VS Code Server

问题本质:

"Downloading VS Code Server" 卡住 ≈ 远程服务器下载 vscode-server 压缩包超时/中断/损坏,VS Code 一直重试,于是显示"Setting up SSH Host ..."不动。


① 最快自救(2 分钟)

  1. 在本机浏览器手动下好服务器端安装包

    • 先拿 Commit ID

      打开 VS Code → 右下角齿轮 → Help → About → 复制 Commit 那一串。

    • 浏览器访问(把 <COMMIT> 换成你的):

      https://update.code.visualstudio.com/commit:<COMMIT>/server-linux-x64/stable

执行这一步出现了如下问题:

复制代码
Cannot GET /commit:%20<COMMIT-ID>/server-linux-x64/stable

A:

报错原因:

URL 里把 commit 值前后多了空格或 %20 ,于是服务器返回 404/400。

把空格去掉、直接拼 commit-id 即可下载。


① 拿到正确 commit-id(无空格)

在 VS Code → Help → About → 复制 Commit 一行,

只保留 16 进制串,例如:

<COMMIT-ID>


② 用 新 CDN 链接(2025 年后稳定)

我没有按照kimi的反馈,而是直接从xshell查看了当前用户目录下的.vscode-server目录下的所有内容:ll

-rw-rw-r-- 1 user user 18146 9月 18 23:02 .<COMMIT>.log -rw-rw-r-- 1 user user 8 9月 18 22:35 .<COMMIT>.pid -rwx------ 1 user user 37 9月 18 22:35 .<COMMIT>.token* drwxrwxr-x 3 user user 4096 9月 18 22:34 bin/ drwxrwxr-x 3 user user 4096 9月 18 23:04 cli/ -rw------- 1 user user 505 9月 20 23:33 .cli.<COMMIT>.log -rwxrwxr-x 1 user user 24499040 9月 18 07:41 code-<COMMIT>* drwx------ 7 user user 4096 9月 18 22:42 data/ drwx------ 8 user user 4096 9月 20 13:28 extensions/ -rw-rw-r-- 1 user user 0 9月 30 13:35 vscode-cli-<COMMIT>.tar.gz 其中<COMMIT> 部分只是字长同 Commit ID 打开 VS Code → 右下角齿轮 → Help → About → 复制 Commit 那一串的<COMMIT>,实际字符不同,但是我重新下载相应的<COMMIT>不是遇到之前提到的错误?所以此时应该怎样?

A:

你看到的文件列表已经 是完整可用的 VS Code Server (bin、cli、extensions 都在,连 token 都生成了),
只是 Commit ID 与本地 VS Code 客户端对不上 ,所以 VS Code 一直在 "Downloading"→重下→再对不上" 死循环。


① 让客户端"认账"------把服务器端现有 Commit ID 抄回来

  1. 在服务器执行:

    bash

  • Copy

    复制代码
    basename ~/.vscode-server/bin/* | grep -E '^[a-f0-9]{40}$' | head -1

    会输出 服务器实际拥有的 40 位 Commit,例如:
    <COMMIT-ID>

  • 在本机 VS Code 安装同版本服务器

    F1Remote-SSH: Settings → 找到
    Remote.SSH: Server Install Path

    填入:

    ~/.vscode-server/bin/<COMMIT-ID>

    保存后重新连接,VS Code 发现路径已存在 → 直接复用,不再下载

然后我插了句:话说为啥每次新打开vscode来连接远程ssh设备都会在.ssh config里新写入一些IP port 怎么回事?

A:

这是 Remote-SSH 插件的"自动写入"功能 在帮你偷懒------

每次你用 VS Code 图形界面 输入 IP:端口 并连接成功后,插件会把这条连接记录自动追加~/.ssh/config,这样下次就能在左侧 SSH 面板 一键点击,不用再输地址。


① 写入内容长什么样

ssh

Copy

复制代码
Host IP
    HostName IP
    Port 22
    User root

Host 行就是你在图形界面里输入的 "标签",后面三行是实际连接参数。


② 为什么会"重复"

  • 手动改过一次 Host 标签 (比如加了端口、改了用户名),

    插件认不出"这是同一条",于是再写一条新的

  • 或者 IP 相同但端口不同 (22 vs 8022),也会被当成两个 Host


③ 如何关闭自动写入

VS Code 设置里搜:

Remote.SSH: Use Local Server

把它 取消勾选 ,插件就不再自动写 config;
或者 手动把 ~/.ssh/config 设为只读,插件写不进去就安静了。

Q:server install path是key value的形式

A:

  • key = 你在 SSH config 里写的 Host 名称(或 IP)

  • value = 服务器端 已存在 的 server 目录(到 bin 层

Q:保存 → 重连 具体是怎么操作在vscode里

A:

在 VS Code 里"保存 → 重连"只要 3 步,**全程图形界面**:


1. 保存设置

  • 设置页填完路径后 **直接关闭标签页**(`Ctrl+W`)

→ VS Code 会自动保存 `settings.json`,**无需手动点保存按钮**。

2. 关闭当前远程窗口

  • **文件菜单** → **Close Remote Connection**

或左下角 **"><" 图标** → **Close Remote Connection**

→ 本地窗口留下,远程窗口被关掉。

3. 重新发起连接

  • 左侧 **远程资源管理器** → 找到你的主机(IP)→ **点击一下**

→ 状态栏先显示 **"Connecting to IP..."**

→ 几秒后提示 **"SSH connected"** 并自动打开远程窗口,**不会再出现 Downloading**。


快捷键一条龙(可选)

```

Ctrl+Shift+P → Remote-SSH: Connect to Host → 选 IP

```

同样完成"重连"。


一句话

> **"关闭远程窗口 → 再点一次主机名" = 重连,**

> **VS Code 会自动用你刚保存的 ServerInstallPath,**

> **从此跳过 Downloading,秒进远程。**

Q:可能是我没有关闭,所以重连的时候还是一直卡着,我觉得直接点左侧 远程资源管理器 → 找到你的主机(IP)→ 点击一下

→ 状态栏先显示 "Connecting to IP..." 这样可能还是有问题,因为可能是缓存的什么commit id

A:

完全正确------
"直接再点主机"只是复用旧会话缓存 ,不会重新读你刚填的 ServerInstallPath

必须 先彻底杀掉旧远程会话,再发起新连接,VS Code 才会用新配置。


① 彻底关闭远程会话(清缓存)

  1. 本地窗口 里按 Ctrl+Shift+P

  2. Remote-SSH: Kill Current Connection

    → 状态栏里的 "SSH" 图标消失,说明远程进程已死。

这里具体是Kill current host什么的,命名稍有不同,但是点进去可以看到各个IP

本地终端执行(不是服务器)

ssh -O exit IP 这句没发执行,本地是windows系统

所以这句没执行

而是执行了之前说的把远程连接关了,然后自动写入那些也关了,然后重新连接的:

这次连接输入了两次密码,不过好像是进入到了真的下载阶段而不是卡在此前的一个阶段,所以应该是有所进步了,不过还是比xshell慢很多,能不能让xshell去连接,下次直接用vscode把xshell当虚拟机那样连接或者怎么连接反正就是计算机里的问题解决不了加一个中间层变量这样接近;后续没有再继续看kimi的回复,问题已经解决了;

相关推荐
☆璇2 小时前
【Linux】库的链接与加载
linux·运维·服务器
半夏知半秋2 小时前
基于skynet框架业务中的gateway实现分析
服务器·开发语言·后端·学习·gateway
沉木渡香3 小时前
VSCode中Java开发环境配置的三个层级(Windows版)1-3
java·windows·vscode
问道飞鱼4 小时前
【服务器知识】HTTP 请求头信息及其用途详细说明
运维·服务器·nginx·http·http头信息
weixin_436525074 小时前
linux-RabbitMQ创建虚拟主机、用户、分配权限、标签
linux·运维·服务器·rabbitmq
云心雨禅10 小时前
WordPress提速指南:Memcached+Super Static Cache+CDN缓存网站内容
linux·服务器·数据库·缓存·memcached
奶茶树12 小时前
【Linux】基础指令
linux·服务器
胡耀超12 小时前
4、存储系统架构 - 从机械到闪存的速度革命
服务器·人工智能·架构·gpu·储存·闪存
星海穿梭者16 小时前
SQL SERVER 查看锁表
java·服务器·前端