Cursor-远程SSH连接指南
Cursor远程SSH连接指南摘要: 本文详细介绍了从Windows系统使用Cursor编辑器通过SSH连接Linux/麒麟系统的完整流程。主要内容包括:1) Cursor远程连接界面入口;2) 扩展冲突处理;3) SSH基础配置方法;4) 远端sshd服务配置要求;5) 公钥免密登录配置;6) PowerShell下密钥生成技巧;7) 连接自检命令;8) 常见错误解决方案;9) 远端服务清理方法
Cursor 远程 SSH 连接指南(Windows → Linux/麒麟)
本文整理自实际排查过程,适用于 Cursor(内置 Anysphere Remote SSH)从 Windows 连接局域网内的 Linux/麒麟 主机。
目录
- 界面入口
- 扩展与冲突
- SSH 基础配置
- 远端 sshd 要求
- 公钥免密(强烈建议)
- PowerShell 下 ssh-keygen 空密码
- 自检命令
- 常见错误与处理
- 清理远端 Cursor 服务端
- 验收清单
- 远端下载 Cursor Server 失败(wget)与本机回退
1. 界面入口
- 启动页(仅「New project / Open project」)没有远程 SSH 按钮,属正常现象。
- 先 打开一个本地文件夹 进入完整编辑界面。
Ctrl + Shift + P→ 搜索Remote-SSH: Connect to Host...或Connect to Host。- 左下角 远程/环境 图标(进入完整界面后)也可打开连接菜单。
2. 扩展与冲突
- Cursor 使用
Anysphere Remote SSH(扩展 ID:anysphere.remote-ssh)。 - 不要与微软
ms-vscode-remote.remote-ssh同时混用;若已安装微软版,建议在 Cursor 中 禁用或卸载,避免出现command ... not found等冲突。
3. SSH 基础配置
配置文件路径(Windows): C:\Users\<用户名>\.ssh\config
示例:
Host kylin-pc
HostName 192.168.1.10
User kylin
Port 22
IdentityFile ~/.ssh/id_ed25519
连接测试:
ssh kylin-pc
4. 远端 sshd 要求
Cursor 远程会执行类似命令:ssh -T -D <本地端口> ... bash --login -c bash,并依赖 TCP 转发。
在远端检查 生效配置:
sudo sshd -T | grep -iE 'allowtcpforwarding|disableforwarding|permitopen|gatewayports'
期望(示例):
| 项 | 建议 | 说明 |
|---|---|---|
allowtcpforwarding |
yes | 动态转发 -D 需要 |
disableforwarding |
no | 未全局禁止转发 |
permitopen |
any(或未限制) | 未禁止转发目标 |
gatewayports |
no | 一般保持即可;与客户端 -D 无冲突 |
修改配置后重启 sshd(按系统选择):
sudo systemctl restart sshd
# 或
sudo systemctl restart ssh
登录脚本: Cursor 使用 bash --login 且通过 管道 喂安装脚本。若 ~/.bashrc / ~/.profile 在非交互下 read、等待输入、长时间阻塞,会导致长时间无输出。请在 ~/.bashrc 靠前位置保证非交互早退,例如:
case $- in *i*) ;; *) return ;; esac
自测:
bash --login -c 'echo LOGIN_OK'
应 立即 输出 LOGIN_OK。
5. 公钥免密(强烈建议)
仅密码登录时,管道 + Askpass 容易导致 「120 秒内远端无任何数据」 类超时。配置公钥 后稳定性明显提升。
5.1 生成密钥
见下一节 PowerShell 下 ssh-keygen 空密码。
5.2 将公钥写入远端(需输入一次密码)
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | ssh kylin@192.168.1.10 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
5.3 远端权限(公钥被忽略时必查)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
5.4 验证免密
ssh -o BatchMode=yes -T kylin@192.168.1.10 "echo OK"
成功时应只输出 OK,且 不再提示密码。
6. PowerShell 下 ssh-keygen 空密码
错误示例:option requires an argument -- N(-N "" 被 PowerShell 吃掉)。
方法一(推荐):交互式, passphrase 直接回车两次
mkdir $env:USERPROFILE\.ssh -Force
ssh-keygen -t ed25519 -f "$env:USERPROFILE\.ssh\id_ed25519"
方法二:非交互空密码
ssh-keygen -t ed25519 -f "$env:USERPROFILE\.ssh\id_ed25519" -N '""'
方法三:使用 cmd 传参
cmd /c "ssh-keygen -t ed25519 -f \"%USERPROFILE%\.ssh\id_ed25519\" -N \"\""
若提示密钥文件已存在,按需选择是否覆盖(
y/n)。
7. 自检命令
与本机 ping:
ping -n 2 192.168.1.10
模拟 Cursor 的管道 + 登录 shell(免密后再测):
cmd /c "echo echo PIPE_OK && exit 0| ssh -T kylin@192.168.1.10 bash --login -c bash"
带动态转发(更接近 Cursor):
cmd /c "echo echo D_OK && exit 0| ssh -T -D 19999 kylin@192.168.1.10 bash --login -c bash"
卡住时用调试:
cmd /c "echo echo D_OK && exit 0| ssh -vvv -T -D 19999 kylin@192.168.1.10 bash --login -c bash"
8. 常见错误与处理
8.1 SSH connection timed out after 120s without receiving any data
含义: 连接已发起,但安装/握手阶段 长时间没有任何 Cursor 识别的输出。
优先排查顺序:
- 公钥免密 是否成功(
BatchMode=yes测试)。 bash --login -c 'echo LOGIN_OK'是否立即成功。sshd -T中allowtcpforwarding yes、未禁止转发。- 远端清理
~/.cursor-server与锁文件后重试。 - Cursor 设置中可适当增大
remote.SSH.connectTimeout(如300)。
8.2 Permission denied (publickey,password)(配合 BatchMode=yes)
通常表示 未配置可用公钥 或 authorized_keys / .ssh 权限不正确。按 §5 修复。
8.3 EBUSY: resource busy or locked(删除临时 .sh 失败)
多为 ssh.exe 仍占用临时文件 或安全软件锁定 %TEMP%。
处理: 任务管理器结束 ssh.exe,或 PowerShell:
Get-Process ssh -ErrorAction SilentlyContinue | Stop-Process -Force
然后完全退出并重开 Cursor。
8.4 PowerShell 多行粘贴出现 >>
说明 语句块未闭合 或 多复制了 }。按 Ctrl + C 回到正常提示符,改用 单行命令。
9. 清理远端 Cursor 服务端
在 远端 执行(当前用户即可):
pkill -f cursor-server 2>/dev/null || true
rm -rf ~/.cursor-server
rm -f /tmp/cursor-remote-lock.* 2>/dev/null
rm -f /run/user/$(id -u)/cursor-remote-lock.* 2>/dev/null
说明:删除的是 远程通过 SSH 自动安装的 Cursor Server,不会卸载 Windows 上的 Cursor 客户端。下次连接会重新安装服务端。
10. 验收清单
- 本机
ssh可登录目标用户与主机。 -
ssh -o BatchMode=yes -T user@host "echo OK"成功(免密)。 - 远端
bash --login -c 'echo LOGIN_OK'立即成功。 -
sudo sshd -T显示allowtcpforwarding yes,转发未被禁止。 - Cursor 仅使用 Anysphere Remote SSH,无微软 Remote SSH 冲突。
- Connect to Host 后可打开远端目录,内置终端在远端执行命令正常。
11. 远端下载 Cursor Server 失败(wget)与本机回退
当 SSH 与安装脚本已正常(日志中出现类似 SSH connection established after ... (first stdout received)、Configuring Cursor Server on Remote),但随后报错 Download failed: Error downloading server from https://downloads.cursor.com/... 时,问题通常在 远端从公网拉取 Cursor Server 压缩包(约 99MB,linux/arm64 等) 不稳定,而不是 SSH 配置错误。
11.1 日志典型表现
- 远端:
Downloading server via wget ... cursor-reh-linux-arm64.tar.gz wget进度极慢,或出现 「在 x/103698902 字节处发生读取错误…重试」,最终 放弃操作- 安装脚本退出码非 0,stdout 中含:
errorMessage==Download failed: ... - Cursor 自动回退:
Downloading server locally and copying it over...(在 Windows 的%TEMP%下载同一 URL,再拷贝到远端)
11.2 建议操作(优先顺序)
-
先等本机回退跑完
保持 Cursor 打开,使用 稳定本机网络(有线更佳)。包约 99MB,拷贝与远端解压需 数分钟 属正常。若仍失败,查看日志末尾是否有拷贝/超时错误。 -
远端直连差时尝试 IPv4(可选)
若日志里wget常连 IPv6(如2606:4700::...)且易断,可在 远端 用 IPv4 测下载是否更稳(URL 与 commit 以当前 Cursor 日志为准):wget -4 -O /dev/null --timeout=30 "https://downloads.cursor.com/production/<commit>/linux/arm64/cursor-reh-linux-arm64.tar.gz"若
-4明显更好,可按网络环境考虑 优先/仅 IPv4(需符合单位网络策略)。 -
重试前清理半成品(远端
kylin用户示例)rm -rf ~/.cursor-server rm -f /tmp/cursor-server-*.tar.gz rm -f /run/user/$(id -u)/cursor-remote-lock.* 2>/dev/null然后在 Cursor 中 重新 Connect to Host。
-
本机与环境
- 确认 Windows 临时目录与远端家目录 有足够磁盘空间。
- 若公司网络限制大文件/HTTPS,需在本机配置 系统代理 或换网络后再连。
11.3 与「120s 无数据」的区别
| 现象 | 常见含义 |
|---|---|
| 长时间无输出后 120s timeout | 多为认证、登录脚本、AllowTcpForwarding、Askpass/管道等(见 §8.1)。 |
已有 Configuring Cursor Server、wget 进度后 Download failed |
多为 公网下载质量;依赖 Cursor 本机下载并拷贝 或改善远端出口网络。 |
参考:Cursor 日志中的典型命令
安装远端服务时,日志中可能出现:
type "<Temp>\cursor_remote_install_<uuid>.sh" | ssh -T -D <port> user@host bash --login -c bash
若本机用 同等条件(尤其 -T、-D、管道、bash --login)能尽快得到输出,而 Cursor 仍超时,再结合 扩展版本、本机 OpenSSH 版本 与官方论坛进一步排查。
文档生成说明:根据会话中的排查步骤整理;主机名、IP、用户名请按实际环境替换。
更多推荐



所有评论(0)