VSCode_RemoteSSH_一直卡在下载服务器_解决教程

VS Code Remote-SSH 一直卡在"正在下载 VS Code 服务器"?一次真实排障记录与详细解决方法

适用场景 :Windows 本地电脑使用 VS Code 的 Remote - SSH 扩展连接远程 Linux 服务器(例如实验室 GPU 服务器),连接过程中长时间提示"正在下载 VS Code 服务器"。

本文环境 :Windows + VS Code + Remote - SSH + Linux 远程服务器。示例服务器地址为 128.60.233.5(仅作案例展示)。

处理结果:本次连接最终已恢复正常。需要说明的是,没有保留完整的 Remote - SSH 错误日志,因此下文对具体根因的判断属于排障推测,而不是已经证实的唯一原因。

文章目录

  • [VS Code Remote-SSH 一直卡在"正在下载 VS Code 服务器"?一次真实排障记录与详细解决方法](#VS Code Remote-SSH 一直卡在“正在下载 VS Code 服务器”?一次真实排障记录与详细解决方法)
    • [一、问题现象:SSH 远程连接一直卡在下载服务器](#一、问题现象:SSH 远程连接一直卡在下载服务器)
    • [二、优先解决:让本地电脑下载 VS Code Server](#二、优先解决:让本地电脑下载 VS Code Server)
      • [1. 打开 VS Code 用户设置(JSON)](#1. 打开 VS Code 用户设置(JSON))
      • [2. 在 `settings.json` 中添加配置](#2. 在 settings.json 中添加配置)
      • [3. 重新连接远程主机并输入密码](#3. 重新连接远程主机并输入密码)
      • [4. 等待 VS Code Server 下载、传输和安装](#4. 等待 VS Code Server 下载、传输和安装)
    • 三、如果仍然卡住,按下面顺序继续排查
      • [方法一:在 Windows PowerShell 中独立测试 SSH](#方法一:在 Windows PowerShell 中独立测试 SSH)
      • [方法二:用 VS Code 自带命令清理服务端组件](#方法二:用 VS Code 自带命令清理服务端组件)
      • [方法三:查看 Remote - SSH 的详细日志](#方法三:查看 Remote - SSH 的详细日志)
      • [方法四:确认本机能否访问 VS Code 下载服务](#方法四:确认本机能否访问 VS Code 下载服务)
    • 四、为什么这一方法通常有效?
    • 五、最终总结:建议按这个优先级排查
    • 参考资料

一、问题现象:SSH 远程连接一直卡在下载服务器

使用 VS Code 连接远程服务器时,右下角持续显示:

"设置 SSH 主机 128.60.233.5:正在下载 VS Code 服务器"

如下图所示:

此时 VS Code 无法正常打开远程工作区,看起来像"SSH 连不上",但这个提示本身并不能证明 SSH 网络连接失败。连接流程大致为:

text 复制代码
Windows 本地 VS Code
        │
        ▼
通过 SSH 连接远程 Linux 主机
        │
        ▼
身份验证(密码或 SSH 密钥)
        │
        ▼
检查 / 安装 / 启动 VS Code Server
        │
        ▼
建立 VS Code 与远程服务器的通信
        │
        ▼
打开远程文件、终端和开发环境

VS Code Server 是 Remote - SSH 在远程主机上运行的配套组件,负责支持远程编辑、扩展和终端等能力。首次连接、VS Code 更新或服务端组件损坏时,都可能涉及下载或重新安装。

可能出现问题的原因

  1. 远程服务器网络受限:实验室或校园网 Linux 主机无法顺利访问 VS Code Server 下载站点。
  2. 服务器组件下载或安装异常:网络不稳定、空间不足、权限问题,或已有安装残留。
  3. 身份验证提示被忽略:VS Code 正在等待输入密码,但弹出的 SSH 终端不明显。
  4. SSH 连接本身异常:主机不可达、科学上网,SSH 端口被阻断或账号不正确。

本次案例中,结合"下载 VS Code 服务器"的提示,优先尝试修改 VS Code Server 下载方式,并显示 SSH 登录终端。

二、优先解决:让本地电脑下载 VS Code Server

这是本文最值得优先尝试的方法。

1. 打开 VS Code 用户设置(JSON)

先取消或关闭一直等待的 Remote-SSH 连接窗口,返回 VS Code 的本地窗口。

按下快捷键:

text 复制代码
Ctrl + Shift + P

打开命令面板后,在搜索框中输入:

text 复制代码
Preferences: Open User Settings (JSON)

如果 VS Code 使用中文界面,也可以搜索:

text 复制代码
首选项: 打开用户设置(JSON)

选择相应命令并回车,如下图:

这里要注意:打开的是 User Settings(用户设置) ,而不是某个项目的 .vscode/settings.json。前者可以对当前 Windows 用户下的 Remote-SSH 连接行为生效。

2. 在 settings.json 中添加配置

如果文件原来为空或只有一对花括号,可以直接写入:

json 复制代码
{
    "remote.SSH.localServerDownload": "always",
    "remote.SSH.showLoginTerminal": true,
    "remote.SSH.useLocalServer": false
}

如果 settings.json 中已经有其他配置,不要直接覆盖整个文件,应将这三个键合并到原有的 JSON 对象中,并注意相邻配置项之间的英文逗号。例如:

json 复制代码
{
    "editor.fontSize": 15,
    "files.autoSave": "afterDelay",
    "remote.SSH.localServerDownload": "always",
    "remote.SSH.showLoginTerminal": true,
    "remote.SSH.useLocalServer": false
}

这三个选项分别表示:

配置项 含义 在排障中的作用
remote.SSH.localServerDownload: "always" 强制优先在本地电脑下载 VS Code Server,并通过 SSH 传到远程主机 规避远程服务器无法访问下载地址的问题
remote.SSH.showLoginTerminal: true 显示 SSH 登录时使用的终端 及时看到并处理密码、密钥口令等提示
remote.SSH.useLocalServer: false 禁用 Remote-SSH 的本地辅助服务器模式 这是官方建议的连接卡顿排障配置之一;并非所有电脑都必须设置

其中,第一项是针对"远程下载卡住"最关键的尝试。需要注意,改成本地下载后,Windows 电脑仍然需要能够访问 VS Code 的下载服务,并且 SSH 传输正常。

按 Ctrl + S 保存设置。

3. 重新连接远程主机并输入密码

重新执行:

text 复制代码
Ctrl + Shift + P
→ Remote-SSH: Connect to Host...
→ 选择远程主机 128.60.233.5(或自己配置的 SSH 主机别名)

如果使用账号密码登录,此时可能看到类似如下终端提示:

截图里同时出现了:

  • "此 shell 正在本地计算机上运行,而不是在连接的远程计算机上运行" :说明这里显示的是 VS Code 本机上的 SSH 登录/安装终端,不意味着最终远程工作区已经打开,更不能单凭这行字认定连接失败。
  • 128.60.233.5's password::表示 SSH 在请求账户密码。输入你用于登录远程 Linux 服务器的密码并按回车。

注意:Linux/SSH 密码输入一般不会显示字符、星号或光标移动,这是正常的。

4. 等待 VS Code Server 下载、传输和安装

完成身份验证后,VS Code 可能仍短暂显示:

"设置 SSH 主机......正在下载 VS Code 服务器"

但是很快就下载完成了。

三、如果仍然卡住,按下面顺序继续排查

方法一:在 Windows PowerShell 中独立测试 SSH

打开 Windows PowerShell(不是必须通过 VS Code),执行:

powershell 复制代码
ssh 用户名@128.60.233.5

请把 用户名 换成你在服务器上的真实 Linux 登录用户名。如果服务器使用自定义端口(例如 2222),可以使用:

powershell 复制代码
ssh -p 2222 用户名@128.60.233.5

如果你已经在 ~/.ssh/config 中配置了主机别名,也可直接执行 ssh 主机别名,确保与 VS Code 使用相同的端口和跳板机配置。

根据结果判断:

命令行结果 初步判断 下一步
能输入密码并进入 Linux 命令行 基础 SSH 连接可用 优先排查 VS Code Server 下载、安装或启动
Connection timed out 主机网络、科学上网、端口等可能有问题 检查内网可达性、校园网/科学上网 与服务器状态
Connection refused 主机可达但目标端口拒绝连接,或服务未监听 检查 SSH 端口与服务器 sshd 服务
Permission denied 身份验证失败 核对用户名、密码、密钥和服务器授权配置
Could not resolve hostname 主机名或 SSH 别名解析失败 核对主机地址和 SSH 配置文件

特别提醒 :10.x.x.x 一般属于私有 IP 地址。对于实验室服务器,离开校园网后可能必须先连接指定 科学上网 或跳板机,不能默认从互联网直接访问。

方法二:用 VS Code 自带命令清理服务端组件

如果 PowerShell 中 SSH 正常,但 VS Code 仍无法连接,尝试:

text 复制代码
Ctrl + Shift + P
→ Remote-SSH: Kill VS Code Server on Host...
→ 选择出问题的远程主机
→ 再次连接

这是 VS Code 官方给出的排障命令之一,适合处理服务端组件安装不完整、进程卡死等情况。

注意:此命令会停止并清理对应的 VS Code Server 安装,可能导致远程 VS Code 扩展需要重新准备;通常不涉及项目代码、训练数据或 Conda 环境,但在多人共用服务器上应只操作自己的登录账户,避免擅自修改他人的文件或服务。

不要在不理解作用范围的情况下直接执行网上看到的 rm -rf 命令。

方法三:查看 Remote - SSH 的详细日志

在 VS Code 中按 Ctrl + Shift + P,输入:

text 复制代码
Remote-SSH: Show Log

也可以使用:

text 复制代码
查看(View)→ 输出(Output)→ 下拉选择 Remote - SSH

重点查看日志中最后出现的 ERROR、Failed、Permission denied、timeout 或安装命令相关信息。可能遇到的情况包括:

典型错误提示 常见排查方向
Failed to download 本地/远程下载站点网络访问失败、代理设置或防火墙
No space left on device 远程用户目录或临时目录空间不足
Permission denied SSH 账号认证或远程安装目录写入权限
The VS Code Server failed to start 服务端启动异常;尝试清理服务端组件后重新安装
open failed: administratively prohibited SSH 端口转发可能受远程服务器策略限制,需管理员检查

可以在成功 SSH 登录后,执行以下只读检查,查看可用空间和用户目录权限:

bash 复制代码
df -h ~
ls -ld ~ ~/.vscode-server 2>/dev/null

如果涉及公司、学校共享主机的代理、端口转发或 SSH 服务配置,请让管理员协助,不建议自行修改系统级 SSH 配置。

方法四:确认本机能否访问 VS Code 下载服务

即使设置了 "remote.SSH.localServerDownload": "always",本机也必须能访问必要的 HTTPS 下载站点。根据 VS Code 官方文档,安装 VS Code Server 时涉及以下地址:

text 复制代码
https://update.code.visualstudio.com/
https://vscode.download.prss.microsoft.com/

如果 Windows 电脑自身网络受限,本地下载也可能失败。遇到这种情况,应检查本机网络代理、校园网/公司网络策略以及 Remote - SSH 日志,而不是反复输入服务器密码。

四、为什么这一方法通常有效?

核心是改变 VS Code Server 组件的获取路径。

默认逻辑(VS Code Remote - SSH 通常先尝试远程下载,失败后可以回退到本地下载):

text 复制代码
远程 Linux 服务器 ────[下载]────> VS Code Server 安装包
         │
         └─ 如果服务器访问外网受限,可能出现下载失败或连接卡住

修改后的逻辑 (remote.SSH.localServerDownload = "always"):

text 复制代码
Windows 本地电脑
    │
    ├─ 通过本机网络下载 VS Code Server
    │
    └─ 通过 SSH 将安装文件传给远程 Linux 主机
                              │
                              └─ 安装并启动 VS Code Server

因此,如果远程 GPU 服务器只能访问内网,而 Windows 电脑可以访问外网并连到该服务器,"本地下载 + SSH 传输"通常比依赖远端下载更可靠。

不过,这个设置无法解决所有 Remote-SSH 错误。例如,SSH 认证失败、远程磁盘满、服务端操作系统不兼容、端口转发被禁用等问题,仍需要根据日志分别处理。

五、最终总结:建议按这个优先级排查

  1. 先打开本地用户设置 JSON ,添加 remote.SSH.localServerDownload: "always"。
  2. 开启 remote.SSH.showLoginTerminal: true,避免遗漏密码提示;必要时设置 remote.SSH.useLocalServer: false。
  3. 重新连接主机,看到密码提示后正常输入;下载提示出现后观察日志进展。
  4. 如果仍然失败,使用 Windows PowerShell 独立执行 ssh 用户名@服务器地址,区分 SSH 网络问题和 VS Code Server 问题。
  5. SSH 正常但 VS Code 异常时,尝试 Remote-SSH: Kill VS Code Server on Host...,或根据日志进一步检查磁盘、权限和网络。

参考资料

  1. Visual Studio Code 官方文档:Remote Development using SSH
  2. Visual Studio Code 官方文档:Remote Development Tips and Tricks(Troubleshooting)
  3. Visual Studio Code 官方文档:Remote Development FAQ
相关推荐
瑞雪兆丰年兮12 分钟前
JavaWeb-day11-SpringBootWeb案例(文件上传)
java·运维·服务器·javaweb·oss
知已难寻12 小时前
Docker 入门:容器技术与 Docker 基础
java·运维·服务器·docker·云原生·容器
星恒随风19 小时前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql
坤坤子吖1 天前
Linux网络编程:自定义应用层协议与 JSON 序列化
linux·服务器·网络·c++·笔记·json
青瓦梦滋1 天前
Redis主从复制
服务器·数据库·redis·缓存·bootstrap
沫璃染墨1 天前
从零入门计算机网络系列(十八):TCP连接管理详解——从三次握手与四次挥手到TIME_WAIT机制
运维·服务器·网络·c++·网络协议·tcp/ip·tcp
Felven1 天前
华为鲲鹏920s芯片serdestool工具使用说明
linux·运维·服务器·华为·鲲鹏920·serdestool
LabVIEW开发1 天前
Omron PLC:接 LabVIEW 常踩的 5 个坑
服务器·网络·labview·labview知识·labview功能·labview程序
独隅1 天前
WebStorm macOS 安装部署与高效调优完全指南
ide·macos·webstorm