Cursor Remote-SSH 离线安装:本机包、官方目录与脚本安装

你可以扔给Cursor本地的Agent让他帮你完成

在无公网或下载极慢的 Linux 服务器上使用 Cursor 的 Remote-SSH,常见做法是:在本机(能上网)按当前 Cursor 版本下载两份 Blob 包 → scp 到服务器 → 解压到官方期望的目录。本文与仓库内 install.sh 行为一致,所有主机名、用户名、IP、版本号和 commit 均使用占位符,实际执行时请替换成自己的环境信息。

背景与目标

  • Cursor 连接远端时会安装 cursor server(reh 包)和 CLIcli-alpine 等),默认从网络拉取;离线环境会卡住或反复失败。
  • 目标:在 ~/.cursor-server 下摆出与 Cursor 自带安装脚本(anysphere Remote-SSH 引导逻辑)一致的目录,使客户端能直接启动 node / bin/cursor-server,而不再去下载。

版本与 commit 从哪来

本机已安装的 Cursor 终端执行:

cursor --version

典型输出为三行(示例含义):

  1. 语义化版本(如 <CURSOR_VERSION>)→ 对应下文 CURSOR_VERSION
  2. 40 位十六进制 commit → 对应下文 CURSOR_COMMIT(与远端目录名、下载 URL 强相关)
  3. 本机架构(如 x64)→ 仅说明本机;服务端包名要看远端 Linux 的 CPU 架构(脚本通过 ssh 执行 uname -m 判断 x64 / arm64)。

若在无 cursor 命令的环境跑脚本,可手动导出。下面是占位示例,请使用你本机 cursor --version 查到的真实值:

export CURSOR_VERSION=<CURSOR_VERSION>
export CURSOR_COMMIT=<40位CURSOR_COMMIT>

COMMIT_IDCURSOR_COMMIT 等价,任设其一即可。

官方目录结构(与 install.sh 一致)

Remote 侧数据目录一般为 $HOME/.cursor-server(即环境变量里的 agent 目录)。reh 主程序应落在:

~/.cursor-server/bin/<platform>-<arch>/<40位commit>/

在常见 glibc Linux、x86_64 上即为:

~/.cursor-server/bin/linux-x64/<commit>/

其中应包含解压后的 nodebin/cursor-server 等(由 vscode-reh-*.tar.gz--strip-components=1 解压得到)。

另外需存在(可为空目录,供运行时写入):

~/.cursor-server/bin/multiplex-server/

同时脚本会创建(与部分历史文档/插件行为兼容):

~/.cursor-server/cli/servers/Stable-<commit>/server/
~/.cursor-server/cli/.cli.json   # 内含 "commitId"

CLI 可执行文件放在家目录数据根下,命名为:

~/.cursor-server/cursor-<commit>

常见误区:早期教程把 reh 直接解压到 bin/<commit>/(缺少 linux-x64 这一层)。当前官方清理/探测逻辑区分「旧式 bin/<commit>」与「新式 bin/linux-x64/<commit>」;路径不对时,客户端可能认为未安装成功,再次清空 bin 并尝试重新下载。因此建议与本文及 install.sh 保持一致。

在本机下载哪两个文件

以下地址中的 <CID> 为 40 位 commit;带版本号的 reh 也可用 CURSOR_VERSION-CURSOR_COMMIT 形式(与 Blob 实际路径一致即可)。

CLI(Alpine x64,教程里常用文件名):

https://cursor.blob.core.windows.net/remote-releases/<CID>/cli-alpine-x64.tar.gz

Server(reh,注意 linux-x64 / linux-arm64 与远端一致):

https://cursor.blob.core.windows.net/remote-releases/<CURSOR_VERSION>-<CID>/vscode-reh-linux-x64.tar.gz

将下载得到的文件放到与 install.sh 同一目录,并尽量使用脚本能自动识别的文件名,例如:

  • vscode-reh-linux-x64.tar.gzvscode-reh-linux-arm64.tar.gz
  • cursor-vscode-server.tar.gz(脚本会作为候选文件名)
  • cli-alpine-x64.tar.gzcursor-cli.tar.gz

一键安装:install.sh

前提:本机可以通过 SSH 访问目标 Linux 服务器。下面统一用 <SSH_HOST> 表示目标主机,它可以是:

  • ~/.ssh/config 中配置好的 Host 别名,例如 my-linux-server
  • 直接写 user@ip,例如 deploy@192.0.2.10

建议先在本机单独验证 SSH 是否可用:

ssh <SSH_HOST> 'echo "$HOME"; uname -m'

如果能输出远端家目录和 CPU 架构,说明脚本后续的 ssh / scp 基本可用。

如果没有配置免密登录

未配置 SSH key 免密登录也可以执行,但脚本中会多次调用 sshscp,因此你会被要求多次输入远端用户密码。这不是脚本卡住,而是 SSH 在等待密码输入。

执行前请确认:

  1. 目标服务器允许密码登录。
  2. 你知道远端用户名、IP、端口和密码。
  3. 第一次连接时若提示 Are you sure you want to continue connecting (yes/no/[fingerprint])?,确认指纹无误后输入 yes

示例:

ssh user@192.0.2.10

如果服务器不是默认 22 端口,或需要指定私钥文件,建议写入 ~/.ssh/config,再把 Host 别名传给脚本。示例:

Host my-linux-server
  HostName 192.0.2.10
  User user
  Port 2222
  IdentityFile ~/.ssh/id_ed25519

然后验证:

ssh my-linux-server 'echo "$HOME"; uname -m'

再执行安装脚本时使用 my-linux-server 即可。脚本参数不适合直接传 -p 2222 这类 SSH 选项,端口、用户名、私钥等请优先放到 ~/.ssh/config

在放有压缩包与脚本的目录执行:

chmod +x install.sh
./install.sh <SSH_HOST>                              # 远端目录默认为远端用户的 ~/.cursor-server
./install.sh <SSH_HOST> '/home/<USER>/.cursor-server' # 显式指定远端绝对路径(可选)

脚本会依次:

  1. 通过 ssh 读取远端 $HOMEuname -m,确定 linux-x64linux-arm64
  2. 从本机 cursor --version(或环境变量)读取 CURSOR_VERSION / CURSOR_COMMIT
  3. 在远端创建 bin/linux-*/<commit>bin/multiplex-servercli/servers/Stable-*/server 等目录。
  4. scp 两个压缩包到远端临时目录 .upload/<commit>/
  5. 在远端:reh 解压到 bin/<platform>-<arch>/<commit>/--strip-components=1);CLI 解压到 ~/.cursor-server 根下并改名为 cursor-<commit>;写入 cli/.cli.json;删除临时包。

完成后终端会打印 reh 目录与 CLI 路径,便于核对。

手工安装对照(与脚本等价)

若不用脚本,可以按下面步骤手工安装。远端路径请使用 绝对路径$HOME,不要写 root/.cursor-server 这种缺少前导 / 的相对路径(在子目录执行时会解析错)。

1. 在本机上传安装包

下面仍以 x86_64 远端为例。若远端是 ARM64,请把 server 包换成 vscode-reh-linux-arm64.tar.gz,并把后续路径中的 linux-x64 改为 linux-arm64

ssh <SSH_HOST> 'mkdir -p "$HOME/.cursor-server"'
scp vscode-reh-linux-x64.tar.gz <SSH_HOST>:'$HOME/.cursor-server/cursor-vscode-server.tar.gz'
scp cli-alpine-x64.tar.gz <SSH_HOST>:'$HOME/.cursor-server/cursor-cli.tar.gz'

如果没有免密登录,上面每条命令都可能要求输入密码。

2. 在远端解压到官方目录

COMMIT=<40位CURSOR_COMMIT>

tar -xzf "$HOME/.cursor-server/cursor-cli.tar.gz" -C "$HOME/.cursor-server"
mv "$HOME/.cursor-server/cursor" "$HOME/.cursor-server/cursor-$COMMIT"

mkdir -p "$HOME/.cursor-server/bin/linux-x64/$COMMIT" "$HOME/.cursor-server/bin/multiplex-server"
mkdir -p "$HOME/.cursor-server/cli/servers/Stable-$COMMIT/server"

tar -xzf "$HOME/.cursor-server/cursor-vscode-server.tar.gz" \
  -C "$HOME/.cursor-server/bin/linux-x64/$COMMIT" --strip-components=1

3. 写入 CLI commit 信息并检查文件

mkdir -p "$HOME/.cursor-server/cli"
printf '%s\n' '{"commitId":"'"$COMMIT"'"}' > "$HOME/.cursor-server/cli/.cli.json"
chmod +x "$HOME/.cursor-server/cursor-$COMMIT" \
  "$HOME/.cursor-server/bin/linux-x64/$COMMIT/node" \
  "$HOME/.cursor-server/bin/linux-x64/$COMMIT/bin/cursor-server"

ls -l "$HOME/.cursor-server/cursor-$COMMIT"
ls -l "$HOME/.cursor-server/bin/linux-x64/$COMMIT/node"
ls -l "$HOME/.cursor-server/bin/linux-x64/$COMMIT/bin/cursor-server"

ARM64 远端将路径中的 linux-x64 改为 linux-arm64,并下载 vscode-reh-linux-arm64.tar.gz

若你曾按旧文装在 bin/<commit>/,可迁到官方路径(示例):

COMMIT=<40位CURSOR_COMMIT>
mkdir -p "$HOME/.cursor-server/bin/linux-x64"
mv "$HOME/.cursor-server/bin/$COMMIT" "$HOME/.cursor-server/bin/linux-x64/$COMMIT"

连接后仍被删 bin、反复下载 tar

多见于装错了 Remote - SSH 扩展来源:请使用 Cursor 自带的 anysphere.remote-ssh,避免使用 VS Code 市场里的 Microsoft 版 Remote-SSH,否则可能与目录约定不一致,表现为反复清空 bin 后重新拉包。社区经验中会卸载再安装与当前 Cursor 匹配的扩展版本,具体以你当前 Cursor 版本说明为准。

客户端侧可适当加大超时、并开启本地下载再上传(按需在 settings.json 中配置 remote.SSH.connectTimeoutremote.SSH.localServerDownload 等)。

参考与致谢

  • 离线思路与 Blob 路径:社区多篇「Cursor SSH 手动安装 / 无网络」类文章。
  • 目录层级以对 Cursor 官方 Remote 安装脚本SERVER_DIR=$HOME/.cursor-server/bin/$PLATFORM-$SERVER_ARCH/<commit>)为准,本文与 install.sh 已与之对齐。

仓库内脚本路径:cursor/install.sh。若 Blob 域名或路径随版本变更,请以 Cursor 官方或当前连接日志中的 URL 为准。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐