cursor连接远程服务器出现无法与建立连接:未能下载 VS Code 服务器(Failed to fetch)解决方案
问题描述
在使用 Cursor 的 Remote SSH 功能连接远程服务器时,出现以下报错:
无法与"xxx.xxx.xxx.xxx"建立连接:未能下载 VS Code 服务器(Failed to fetch)或英文版:
Could not establish connection to "xxx.xxx.xxx.xxx": Failed to download VS Code Server (Failed to fetch)具体现象:
- Cursor 能成功 SSH 连接到服务器
- 但在"正在下载 VS Code Server"阶段卡住
- 最终超时报错
Failed to fetch - 重试多次结果一样
原因分析
Cursor 的 Remote SSH 功能需要在远程服务器上安装一个轻量级的 VS Code Server,用于处理代码编辑、文件操作和终端交互。这个 Server 的安装包托管在update.code.visualstudio.com或cursor.sh的 CDN 上。
国内远程服务器连接失败的原因通常是:
| 原因 | 说明 |
|---|---|
| 服务器无法访问外网 | 国内云服务器(如阿里云轻量、腾讯云)可能默认没有外网访问权限 |
| CDN 被屏蔽 | cursor.sh或vscode-update.azurewebsites.net在某些地区不可达 |
| DNS 解析失败 | 服务器 DNS 无法解析 Cursor 更新服务器域名 |
| 代理未配置 | 服务器需要通过代理访问外网,但 Cursor 不知道代理配置 |
解决方案
方案一:手动上传 VS Code Server(最稳定)
步骤1:在本地找到 VS Code Server 的 commit id
# 在 Cursor 中查看(Help → About),找到 Commit ID # 或者在终端查看 cat /Applications/Cursor.app/Contents/Resources/app/product.json | grep -o '"commit": "[^"]*"'步骤2:在本地下载对应版本的 Server 包
# 替换 COMMIT_ID 为实际值 COMMIT_ID="abc123def456" # 下载 Linux x64 版本的 Server curl -L "https://update.code.visualstudio.com/commit:${COMMIT_ID}/server-linux-x64/stable" \ -o vscode-server-linux-x64.tar.gz步骤3:上传到远程服务器并解压
# 上传到服务器 scp vscode-server-linux-x64.tar.gz user@your-server:~/ # SSH 到服务器 ssh user@your-server # 解压到指定路径 mkdir -p ~/.cursor-server/bin/${COMMIT_ID} tar -xzf ~/vscode-server-linux-x64.tar.gz -C ~/.cursor-server/bin/${COMMIT_ID} --strip-components=1 # 权限处理 chmod +x ~/.cursor-server/bin/${COMMIT_ID}/server.sh chmod +x ~/.cursor-server/bin/${COMMIT_ID}/bin/cursor-server chmod +x ~/.cursor-server/bin/${COMMIT_ID}/node步骤4:创建标记文件
touch ~/.cursor-server/bin/${COMMIT_ID}/0步骤5:在 Cursor 中重新连接
此时 Cursor 检测到 Server 已存在,会跳过下载步骤,直接启动。
方案二:在远程服务器上配置代理
# SSH 到服务器后 # 设置 HTTP 代理 export HTTP_PROXY=http://your-proxy-server:port export HTTPS_PROXY=http://your-proxy-server:port # 或者在 ~/.bashrc 中永久设置 echo 'export HTTP_PROXY=http://your-proxy-server:port' >> ~/.bashrc echo 'export HTTPS_PROXY=http://your-proxy-server:port' >> ~/.bashrc source ~/.bashrc注意:Cursor Remote SSH 启动的是一个非登录 Shell,可能不会自动加载.bashrc。可以在.bash_profile中也设置一份,或者使用方案一手动安装。
方案三:使用国内镜像下载
# 在远程服务器上执行 # 使用 jsdelivr CDN 镜像 COMMIT_ID="你的commit_id" wget "https://cdn.jsdelivr.net/gh/cursor-server-mirror/server-linux-x64-${COMMIT_ID}.tar.gz" # 或者使用代理下载 wget -e "https_proxy=http://your-proxy:port" \ "https://update.code.visualstudio.com/commit:${COMMIT_ID}/server-linux-x64/stable"方案四:验证网络连接
# 在远程服务器上测试是否能访问 Cursor 更新服务器 curl -I https://cursor.sh curl -I https://update.code.visualstudio.com # 测试 DNS nslookup cursor.sh nslookup update.code.visualstudio.com # 如果 DNS 解析失败,修改 /etc/resolv.conf echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf总结
遇到Failed to fetch错误,推荐优先级:
- 方案一(手动上传):最稳定,一次操作永久解决
- 方案四(检查网络):快速排查,有时重启服务器就能恢复网络
- 方案二(配置代理):如果服务器本身没有外网权限,必须配代理
- 方案三(国内镜像):备选方案,适合批量部署场景
如果频繁在不同服务器上使用 Cursor Remote,建议用方案一在本地保存一份 Server 包,每次直接 scp 上传即可。