问题现象
在 VS Code 中使用 Remote-SSH 连接到远程 Linux 主机(例如 OK3568 开发板)进行开发时,扩展面板无法正常加载扩展列表,搜索 C/C++ 等插件时只显示一个"C/C++ Themes"且报错:
Error while fetching extensions. Failed to fetch
Showing local extensions.
远程主机上已安装的扩展数量显示为 0,无法安装任何语言服务扩展(如 C/C++ 扩展),导致代码无法跳转定义、无法补全等。
但远程主机本身网络是通的,ping 8.8.8.8 和 ping www.baidu.com 均成功,说明不是物理网络不通。
原因分析
VS Code 的扩展市场默认源是 marketplace.visualstudio.com。在国内网络环境下,该域名有时会被干扰或 DNS 解析异常,导致 VS Code Server 无法连接。
Remote-SSH 模式下,VS Code 会在远程主机上运行一个 vscode-server 进程,该进程负责下载和安装扩展。如果远程主机无法访问默认的扩展市场 URL,就会出现上述现象。
为什么 ping 通却无法访问扩展市场?
-
ping测试的是 ICMP 协议,不涉及 HTTPS。 -
扩展市场需要 HTTPS(443端口),可能被防火墙、运营商或 DNS 污染阻断。
-
VS Code Server 默认使用
https://marketplace.visualstudio.com,该域名在国内部分地区访问不稳定。
解决方案
更换扩展市场镜像源(最简洁有效)
通过修改 VS Code 的远程设置,将扩展市场 URL 切换到国内可访问的镜像(如 Azure 中国 CDN)。
步骤:
-
确认当前连接的是远程主机
在 VS Code 左下角状态栏应显示
SSH: 192.168.0.123等远程主机标识。 -
打开远程设置文件
按
Ctrl+Shift+P,输入Preferences: Open Remote Settings (JSON)并回车。如果找不到该命令,可以使用
Preferences: Open Settings (JSON),但务必确保当前修改的是远程主机的配置(可以通过看窗口标题栏或状态栏判断)。 -
添加镜像源配置
在打开的空大括号
{}中插入以下内容:json
{ "extensions.gallery.serviceUrl": "https://vscode.cdn.azure.cn/extensionGallery/extensionGallery/", "extensions.gallery.cacheUrl": "https://vscode.cdn.azure.cn/extensionGallery/extensionGallery/publishers" }注意 :两个 URL 末尾的斜杠
/必须保留,否则配置无效。 -
保存文件 (
Ctrl+S)。 -
彻底重启 VS Code
-
关闭所有 VS Code 窗口。
-
在任务管理器(Windows)或活动监视器(macOS/Linux)中结束所有
code和code helper进程。 -
重新打开 VS Code,重新连接到远程主机。
-
-
安装 C/C++ 扩展
打开扩展面板(
Ctrl+Shift+X),搜索C/C++,现在应该能看到微软官方的C/C++扩展。点击Install,等待安装完成。
安装成功后,远程主机的扩展列表中会显示已安装的扩展,代码跳转(F12)等功能恢复正常。