跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PowerShellVScodeRN

Cursor 通过 SSH 连接 Linux 失败的排查与修复

Cursor 通过 Remote-SSH 连接 Linux 服务器失败,但 MobaXterm 正常、`ssh -F /dev/null` 可连,说明问题在本机客户端或配置而不是服务器。排查后发现 Windows 自带 `ssh.exe` 触发了 10013 权限拒绝,同时 MobaXterm 的 `/etc/ssh_config` 里存在 `User ""` 和弃用的 `UseRoaming no` 等配置错误。处理方式是修复 MobaXterm 配置,或让 Cursor 明确使用固定路径的 SSH 客户端,并指定 `remote.SSH.configFile` 和 `remote.SSH.remotePlatform`,必要时再通过防火墙放行或改用 Git for Windows 的 SSH。

DevOpsTeam发布于 2026/6/30更新于 2026/9/1042 浏览

Cursor 通过 SSH 连接 Linux 失败的排查与修复

在 Cursor 里用 Remote-SSH 连 Linux 服务器时,表面看起来是同一个 ssh [email protected],结果却不一样:MobaXterm 能连,Cursor 不行;加上 -F /dev/null 反而又能连上。这个现象其实已经把范围缩得很小了,问题不在服务器,也不太像纯网络故障,更像是客户端本地配置或本地安全策略在作怪。

现象

  • MobaXterm 中可以正常连接:ssh [email protected]
  • Cursor 中连接失败:ssh [email protected]
  • 使用 -F /dev/null 可以连接:ssh -F /dev/null [email protected]

排查过程

先看 ~/.ssh/config。

cat ~/.ssh/config

内容本身看起来没什么异常:

Host song123 HostName 10.12.15.111 User song Port 22

接着在 Cursor 的 PowerShell 里把 SSH 日志打满:

ssh -vvv [email protected]

关键报错是:

debug3: connectex - ERROR ConnectEx() :10013
debug1: connect to address 10.12.15.111 port 22: Permission denied
ssh: connect to host 10.12.15.111 port 22: Permission denied

这里的 10013 对应 WSAEACCES,也就是权限被拒绝。它不是'连不上',而是 Windows 拦住了这个出站连接。

再验证一下网络本身:

Test-NetConnection 10.12.15.111 -Port 22

结果是 TcpTestSucceeded : True。

到这一步,思路就比较明确了:端口通,服务器也在,Cursor 用的那个 SSH 客户端被本机环境限制住了。

MobaXterm 和 Cursor 走的不是同一套东西。MobaXterm 用的是自己的 SSH 客户端,跑在 Cygwin 环境里;Cursor 默认调用的是 Windows 自带的 OpenSSH,路径一般是:

C:\Windows\System32\OpenSSH\ssh.exe

如果安全软件或防火墙对这个 ssh.exe 做了限制,就会出现这种'别的工具能连,Cursor 不能连'的情况。

再往下看,MobaXterm 这边还有一个容易忽略的坑:它自己的系统级 SSH 配置文件也坏了。

 /etc/ssh_config
cat

报错类似这样:

/etc/ssh_config line 1: Missing argument.
/etc/ssh_config line 10: Deprecated option "useroaming"
/etc/ssh_config: terminating, 1 bad configuration options

问题点有两个:

  • 第 1 行 User "" 这种空值写法会让解析器直接报错
  • 第 10 行 UseRoaming no 已经是弃用选项

这也解释了为什么 ssh -F /dev/null 能工作:它绕开了坏掉的配置文件,SSH 直接按最干净的默认参数启动了。

处理方式

修复 MobaXterm 自己的 SSH 配置

先找到它实际在用的配置文件位置:

cygpath -w /etc/ssh_config

便携版通常会落在临时目录下面,比如:

D:\Temp\MxtXXX\mx86_64b\etc\ssh_config

把有问题的行注释掉,保留正常配置即可:

# User ""
ForwardAgent no
Compression yes
PreferredAuthentications hostbased,publickey,password,keyboard-interactive
ForwardX11 yes
ForwardX11Trusted yes
NoHostAuthenticationForLocalhost yes
StrictHostKeyChecking no
CheckHostIP no
# UseRoaming no
让 Cursor 改用可控的 SSH 客户端

如果只是想让 Cursor 稳定连上,直接让它用 MobaXterm 的 SSH 更省事。这里我更倾向于把它复制到固定目录,而不是继续依赖临时目录。临时目录一变,后面又得重新配。

先确认 MobaXterm 当前的 ssh 在哪里:

cygpath -w "$(which ssh)"

示例输出可能是:

D:\Temp\MxtXXX\mx86_64b\bin\ssh.exe

然后把整个 mx86_64b 目录复制到固定路径,比如:

C:\Tools\MobaSSH\mx86_64b\bin\ssh.exe

也可以直接用 _ssh.exe:

C:\Tools\MobaSSH\mx86_64b\bin\_ssh.exe

接着在 Cursor 的 settings.json 里指定 SSH 路径:

{
  "remote.SSH.path": "C:\\Tools\\MobaSSH\\mx86_64b\\bin\\_ssh.exe",
  "remote.SSH.configFile": "C:\\Users\\你的用户名\\.ssh\\config",
  "remote.SSH.remotePlatform": {"song123": "linux"}
}

这里有两个地方不能省:

  • remote.SSH.path:明确告诉 Cursor 用哪个 SSH 可执行文件
  • remote.SSH.configFile:必须指定,因为 MobaXterm 的 SSH 是 Cygwin 路径体系,不会自动去读 Windows 路径下的配置

先在 PowerShell 里测一下这个 SSH 客户端是否正常:

& "C:\Tools\MobaSSH\mx86_64b\bin\_ssh.exe" -V
& "C:\Tools\MobaSSH\mx86_64b\bin\_ssh.exe" -F "C:\Users\你的用户名\.ssh\config" song123

如果这一步没问题,再重启 Cursor 走 Remote-SSH。

最终可用配置

SSH 配置文件 C:\Users\你的用户名\.ssh\config
Host song123 HostName 10.12.15.111 User song Port 22
Cursor settings.json
{
  "remote.SSH.path": "C:\\Tools\\MobaSSH\\mx86_64b\\bin\\_ssh.exe",
  "remote.SSH.configFile": "C:\\Users\\你的用户名\\.ssh\\config",
  "remote.SSH.remotePlatform": {"song123": "linux"}
}

结论

这类问题通常不是一处出错,而是两层叠在一起:一层是 Windows 对 ssh.exe 的拦截,报错 10013;另一层是 MobaXterm 自带的 ssh_config 里还有语法问题,导致它和 Windows 版 OpenSSH 的行为完全不一样。

真正比较稳的处理方式,是让 Cursor 明确使用一个可控的 SSH 客户端,再把配置文件路径也写死。这样排障成本最低,后面换环境也不容易再踩一次。

如果方案 B 不方便,也可以回头处理 Windows Defender 防火墙,给 C:\Windows\System32\OpenSSH\ssh.exe 加出站放行规则;或者直接改用 Git for Windows 自带的 SSH:

{
  "remote.SSH.path": "C:\\Program Files\\Git\\usr\\bin\\ssh.exe"
}

目录

  1. Cursor 通过 SSH 连接 Linux 失败的排查与修复
  2. 现象
  3. 排查过程
  4. 处理方式
  5. 修复 MobaXterm 自己的 SSH 配置
  6. User ""
  7. UseRoaming no
  8. 让 Cursor 改用可控的 SSH 客户端
  9. 最终可用配置
  10. SSH 配置文件 C:\Users\你的用户名\.ssh\config
  11. Cursor settings.json
  12. 结论

更多推荐文章

查看全部
  • Python 核心面试题解析:模块、装饰器与异步编程
  • Qwen-Image-Lightning 生成水墨中国风 AI 绘画指南
  • Qwen-2512+ComfyUI 开源 AI 绘画部署实战分析
  • C++ 显性契约与隐性规则:类型转换
  • 基于 Python 开发可调用工具的 AI Agent 实现电脑配置评价
  • 降低 AIGC 检测率的 15 个提示词技巧
  • 现代化Python GUI开发指南:3步打造桌面应用
  • 2025 亚洲 WEB3 商业生态创新峰会 MANAGAME 与 ETO 联合发布
  • C++ 递归算法实战:汉诺塔问题详解
  • VSCode Copilot 配置文件提示“未知工具”警告排查与修复
  • 通义万相 2.1 模型核心功能与云端部署指南
  • JavaScript 文档对象核心属性实战指南
  • C++ 核心基础概念梳理
  • Web 自动化测试实战:基于 Python+Selenium 的博客系统测试流程
  • LLaMA Factory 微调大语言模型与视觉语言模型
  • IntelliJ IDEA 集成 GitHub Copilot 使用教程
  • FPGA 以太网接口设计,纯 Verilog 实现 UDPTCP 协议
  • 私有化部署 FastGPT+OneAPI 构建大模型知识库
  • 数据库字段命名规范与合法性检查脚本
  • Dify 与 MySQL 深度整合实战:基于 MCP 协议的数据交互

相关免费在线工具

  • 随机加州地址生成器

    随机生成加州地址(街道、城市、州CA、邮编),支持数量快捷选择、显示全部与下载。 在线工具,随机加州地址生成器在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online