1. 先搞清楚 Resolver error 到底卡在哪一步
VS Code Remote SSH 报Resolver error: Error: Running the contributed command: '_workbench.downloadResource' failed.这个错,很多人第一反应是网络问题,其实大多数情况下跟网络没关系。这个报错的本质是:VS Code 本地端让远端主机去下载并解压 vscode-server,但远端那一步没跑通。
Remote SSH 首次连接一台 Linux 主机时,做的事情比你想的多。它会在远端用户目录下创建一个.vscode-server目录,然后尝试下载一个 vscode-server 的压缩包,用tar解压,再启动server.sh。整条链路里任何一环断了,本地就会看到 Resolver error。
我试过在一台最小化安装的 CentOS 上连,日志里直接刷出:
tar --version: main: line 416: tar: command not found mv: cannot stat 'vscode-server*/*': No such file or directory ERROR: /root/.vscode-server/bin/3866c3553be8b268c8a7f8c0482c0c0177aa8bfa/node or .../server.sh don't exist看到tar: command not found就基本定位了:远端没有 tar,压缩包下下来了也解不开,node和server.sh自然不存在,本地就抛 Resolver error。
但还有第二种情况:tar 是有的,可.vscode-server目录权限不对,或者磁盘满了,或者上次安装残留了半截文件,解压照样失败。这时候光看本地弹窗没用,得去翻 Remote SSH 的输出日志。
这篇要解决的核心检索词就是VS Code Remote SSH Resolver error 排查,适合两类人:一是刚拿到一台新 Linux 主机、第一次用 Remote SSH 连就报错的;二是之前能连、某天突然连不上、想快速定位是 tar 缺失还是目录权限问题的。下面我会从远端环境检查讲到remote.SSH.serverInstallPath的配置,再到重连后怎么读日志验证。
先明确一点:remote.SSH.serverInstallPath这个设置的作用,是让你把 vscode-server 的安装位置从默认的~/.vscode-server换到别的路径。为什么要换?常见原因有三个:默认目录所在分区空间不够、默认目录权限被限制、或者你想把 server 统一放到一个可管理的目录里。改路径本身不解决 tar 缺失,但能帮你绕开权限和空间问题,也能让排查更清晰。
排查顺序建议这样走:先确认远端有没有 tar 和基础依赖,再看.vscode-server目录状态,最后才考虑改serverInstallPath。顺序反了容易白折腾。
2. TaoToken 前置:把模型接入和远端环境分开处理
这里要澄清一个容易混淆的点。Remote SSH 的 Resolver error 是远端主机环境问题,跟模型服务没有直接关系。但很多做 AI 编码的开发者,会在 Remote SSH 连上远端后,在远端跑 Claude Code、Codex 这类命令行 Agent,这时候才需要配置模型接入。
所以这一节讲的是:当你把远端环境修好、Remote SSH 能连上之后,如果要在远端或本地用 TaoToken 接入模型做编码,前置要准备什么。TaoToken 是一个模型 API 聚合服务,官网在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 入口是 https://taotoken.net/api 。
前置准备其实就三样东西,我把它叫「三件套」:
第一是Base URL。TaoToken 的 API 地址是https://taotoken.net/api,注意这个地址后面不加 UTM 参数,配置里就写这个。
第二是API Key。去控制台生成,地址是 https://taotoken.net/console ,生成后复制保存好,后面配置里要用。
第三是Model ID。你要用哪个模型,就填对应的模型标识,比如 Claude 系列、GPT 系列等,具体以控制台或文档里列出的为准。
这三件套在后面的配置片段里会反复出现。不管你是配 Claude Code、Cline、还是 Codex 的auth.json,核心都是把 Base URL、Key、Model ID 填对。
如果你只是想让 Remote SSH 先连上,那这一节可以先跳过,直接看第 3 节的远端环境修复。但如果你连上远端后要跑 AI 编码 Agent,建议先把 Key 准备好,免得连上了又卡在模型配置上。
顺便说下 Coding Plan,如果你打算长期在远端做 Agent 编码,可以了解下 https://taotoken.net/coding-plan ,适合需要稳定调用额度的场景。模型对话调试入口在 https://taotoken.net/chat ,接入文档在 https://taotoken.net/doc ,API Keys 管理在 https://taotoken.net/api-keys 。
这里要强调:TaoToken 是合规的模型 API 服务,不是网络中转工具,也不涉及任何网络访问方式的改变。Remote SSH 连不上远端,是远端 Linux 环境的问题,跟模型服务无关,两者要分开排查。
3. 可复制配置:serverInstallPath 与远端环境修复
这一节是全文最实操的部分。分两块:先修远端环境,再改serverInstallPath。
3.1 远端环境修复
先 SSH 上去(用系统自带的 ssh 命令,不依赖 VS Code),检查 tar:
which tar tar --version如果没有输出,说明 tar 缺失。按发行版装:
# CentOS / RHEL / Fedora sudo yum install -y tar # Ubuntu / Debian sudo apt-get update && sudo apt-get install -y tar # openSUSE sudo zypper install -y tar装完再确认一次tar --version有输出。
然后清理上次失败的残留:
rm -rf ~/.vscode-server这一步很关键。残留的半截目录会让下次连接继续失败,因为 VS Code 以为已经装好了。
再检查基础依赖,Remote SSH 对远端 Linux 有要求:kernel >= 3.10、glibc >= 2.17、libstdc++ >= 3.4.18,还需要 OpenSSH server、bash、curl 或 wget。检查命令:
uname -r ldd --version strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX | tail -5 which curl wget bash如果 glibc 或 libstdc++ 版本太低,比如 CentOS 6 这种,升级成本很高,建议直接换更新的系统版本。
3.2 配置 remote.SSH.serverInstallPath
远端环境修好后,如果你想把 server 装到指定目录(比如空间更大的分区,或者统一管理),在本地 VS Code 的settings.json里加配置。打开方式:Ctrl+Shift+P(macOS 是Cmd+Shift+P),输入Preferences: Open User Settings (JSON)。
配置片段如下:
{ "remote.SSH.serverInstallPath": { "你的主机名或Host别名": "/data/vscode-server" } }注意这里的 key 是你在 SSH config 里配置的 Host 别名,不是 IP。比如你的~/.ssh/config里写的是:
Host my-dev-box HostName 192.168.1.100 User root那settings.json里就写:
{ "remote.SSH.serverInstallPath": { "my-dev-box": "/data/vscode-server" } }目标目录要提前建好并给对权限:
sudo mkdir -p /data/vscode-server sudo chown -R $(whoami):$(whoami) /data/vscode-server如果你用的是 root 登录,$(whoami)就是 root,直接chown -R root:root /data/vscode-server也行。
改完settings.json保存,然后重连。这里有个坑:改完路径后,旧路径的残留不会自动清,建议两边都清一下:
rm -rf ~/.vscode-server rm -rf /data/vscode-server/*3.3 如果你在远端跑 AI 编码 Agent
Remote SSH 连上后,在远端终端里配 Claude Code 或 Codex 时,三件套要写全。以 Claude Code 的配置为例,环境变量方式:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="你的Key" export ANTHROPIC_MODEL="你的Model ID"Codex 的auth.json方式(路径通常在~/.codex/auth.json):
{ "base_url": "https://taotoken.net/api", "api_key": "你的Key", "model": "你的Model ID" }Cline 这类插件在设置里填 Base URL、API Key、Model ID 三个字段即可。核心就是这三件套,缺一个都连不上。
4. 验证请求:重连后看 Remote SSH 输出日志
配置改完,怎么确认真的好了?不能只看本地弹窗消失,要看日志。
重连步骤:Ctrl+Shift+P打开命令面板,输入Remote-SSH: Connect to Host,选你的主机。连接过程中,打开输出面板:Ctrl+Shift+U(或菜单 View → Output),右上角下拉选Remote - SSH。
正常连接成功的日志里,你会看到类似这样的流程:
Setting up SSH Host my-dev-box Downloading VS Code Server... Installing VS Code Server... Starting VS Code Server...如果还是失败,日志会明确告诉你卡在哪。对照几种典型输出:
看到tar: command not found,说明 tar 还是没装好,回第 3.1 节。
看到mv: cannot stat 'vscode-server*/*',说明解压没成功,通常是 tar 缺失或压缩包损坏,清残留重来。
看到Permission denied,说明目标目录权限不对,检查serverInstallPath指向的目录 owner。
看到No space left on device,说明磁盘满了,df -h看一下,换个分区。
验证 server 是否真的装到了你指定的路径:
ls -la /data/vscode-server/应该能看到bin目录,里面有一串 commit hash 命名的文件夹,进去有node和server.sh。
再验证远端能跑起来:
/data/vscode-server/bin/*/server.sh --help有输出就说明 server 本身没问题。
如果你在远端配了 AI Agent,验证模型接入是否通:
curl https://taotoken.net/api/v1/models \ -H "Authorization: Bearer 你的Key"返回模型列表就说明 Key 和 Base URL 都对。这一步能帮你区分:是 Remote SSH 没连上,还是连上了但模型配置有问题。
5. 本篇常见错排查:对照真实报错定位
这一节把常见报错和原因列清楚,方便你对号入座。
报错一:Resolver error: Error: Running the contributed command: '_workbench.downloadResource' failed.
这是本文主错。根因是远端下载或解压 vscode-server 失败。排查顺序:先which tar,再rm -rf ~/.vscode-server,再检查磁盘和权限。90% 的情况是 tar 缺失。
报错二:tar: command not found
远端没装 tar。按发行版装,装完清残留重连。注意有些精简镜像(比如某些容器基础镜像)默认不带 tar,要手动装。
报错三:mv: cannot stat 'vscode-server*/*': No such file or directory
解压产物不存在,通常是 tar 失败导致。也可能是下载的压缩包不完整,清掉.vscode-server重新下载。
报错四:Permission denied或EACCES
serverInstallPath指向的目录当前用户没写权限。chown改 owner,或者换一个用户有权限的目录。
报错五:No space left on device
默认~所在分区满了。用df -h确认,然后通过serverInstallPath换到空间大的分区。
报错六:local proxy failed或连接超时
这类通常跟本地网络环境或 SSH 配置有关,检查~/.ssh/config里的 HostName、Port、User 是否正确,以及本地能否用系统 ssh 命令连上。如果系统 ssh 都连不上,VS Code 肯定也连不上。
报错七:reading choices相关错误
这类多出现在模型 API 调用返回格式异常时,检查 Base URL 是否写成了https://taotoken.net/api(不要多加路径),Key 是否有效,Model ID 是否拼写正确。
报错八:OAuth 相关报错
如果你用的是需要 OAuth 的客户端,确认回调地址和网络可达性。TaoToken 的 API Key 方式不涉及 OAuth,直接用 Key 即可。
排查通用思路:先看 Remote SSH 输出日志,日志里第一行报错往往就是根因。不要被本地弹窗的笼统提示带偏。
6. 后续怎么用:把环境固定下来
环境修好之后,建议做两件事让它稳定。
第一,把远端依赖固化。如果你经常开新主机,写个初始化脚本:
#!/bin/bash # init-remote-dev.sh set -e if ! command -v tar &> /dev/null; then if command -v yum &> /dev/null; then sudo yum install -y tar curl elif command -v apt-get &> /dev/null; then sudo apt-get update && sudo apt-get install -y tar curl fi fi mkdir -p /data/vscode-server sudo chown -R $(whoami):$(whoami) /data/vscode-server rm -rf ~/.vscode-server echo "remote dev env ready"新主机跑一遍,省得每次手动排查。
第二,把serverInstallPath写进团队统一的settings.json模板,避免每个人路径不一致导致排查困难。
如果你连上远端后要长期跑 AI 编码 Agent,建议把三件套也固化到环境变量或配置文件里。Base URL 用https://taotoken.net/api,Key 从 https://taotoken.net/api-keys 管理,Model ID 按需选。接入细节看 https://taotoken.net/doc ,调试模型可以用 https://taotoken.net/chat ,长期编码需求看 https://taotoken.net/coding-plan 。
最后提醒一句:Remote SSH 的 Resolver error 本质是远端环境问题,别一上来就怀疑网络或模型服务。先which tar,再清.vscode-server,再看日志,这三步能解决大部分情况。改serverInstallPath是进阶手段,用来绕开权限和空间限制,不是万能药。把远端依赖装齐、目录权限给对,比什么都管用。