解决 Cursor 无法通过 SSH 连接 Linux 服务器的问题
📋 问题描述
在使用 Cursor 编辑器通过 Remote-SSH 连接 Linux 服务器时遇到连接失败的问题:
- MobaXterm 中可以正常连接:
ssh song@10.12.15.111✅ - Cursor 中连接失败:
ssh song@10.12.15.111❌ - 使用
-F /dev/null可以连接:ssh -F /dev/null song@10.12.15.111✅
🔍 问题排查过程
第一步:检查 SSH 配置文件
首先怀疑是 SSH 配置文件的问题。检查用户配置文件:
cat~/.ssh/config配置文件内容正常:
Host song123 HostName 10.12.15.111 User song Port 22第二步:查看详细错误信息
在 Cursor 的 PowerShell 中运行:
ssh-vvv song@10.12.15.111发现关键错误:
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(权限被拒绝)
第三步:验证网络连通性
Test-NetConnection10.12.15.111-Port 22结果:TcpTestSucceeded : True✅
这说明网络层面是通的,问题不在网络。
第四步:定位问题根源
通过对比发现:
- MobaXterm 使用自己的 SSH 客户端(Cygwin 环境)
- Cursor 使用 Windows 自带的 OpenSSH(
C:\Windows\System32\OpenSSH\ssh.exe)
问题很可能是:Windows 防火墙或安全软件拦截了ssh.exe的出站连接。
第五步:检查 MobaXterm 的 SSH 配置
在 MobaXterm 中检查系统配置文件:
cat/etc/ssh_config发现问题:
User "" ForwardAgent no ... UseRoaming no错误信息显示:
/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失败的原因。
🛠️ 解决方案
方案 A:修复 MobaXterm 的系统配置文件(适用于 MobaXterm)
找到 MobaXterm 的配置文件位置(便携版通常在临时目录):
cygpath -w /etc/ssh_config# 输出示例:D:\Temp\MxtXXX\mx86_64b\etc\ssh_config编辑文件,注释掉有问题的行:
# User "" ← 注释掉第1行 ForwardAgent no Compression yes PreferredAuthentications hostbased,publickey,password,keyboard-interactive ForwardX11 yes ForwardX11Trusted yes NoHostAuthenticationForLocalhost yes StrictHostKeyChecking no CheckHostIP no # UseRoaming no ← 注释掉第10行方案 B:让 Cursor 使用 MobaXterm 的 SSH 客户端(推荐)
1. 复制 MobaXterm 的 SSH 到固定目录
找到 MobaXterm 的 SSH 可执行文件:
cygpath -w"$(whichssh)"# 输出示例:D:\Temp\MxtXXX\mx86_64b\bin\ssh.exe重要:不要直接使用临时目录路径(D:\Temp\...),因为临时目录会变化。
将整个mx86_64b目录复制到固定位置,例如:
C:\Tools\MobaSSH\mx86_64b\bin\ssh.exe或使用_ssh.exe(实际二进制文件):
C:\Tools\MobaSSH\mx86_64b\bin\_ssh.exe2. 配置 Cursor 使用新的 SSH 路径
打开 Cursor 的设置(Ctrl + Shift + J→ 点击右上角{}打开 JSON),添加:
{"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:指定 SSH 可执行文件的完整路径remote.SSH.configFile:必须指定,因为 MobaXterm 的 SSH 使用 Cygwin 路径系统,默认不会读取 Windows 路径下的配置文件remote.SSH.remotePlatform:指定远程主机平台类型
3. 验证配置
在 Cursor 的 PowerShell 中测试:
&"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 22Cursor 设置(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 防火墙/安全软件拦截:Windows 自带的
ssh.exe被拦截,导致连接失败(错误 10013) - 配置文件路径不匹配:MobaXterm 的 SSH 使用 Cygwin 路径系统,默认不读取 Windows 路径下的配置文件
解决思路
- 绕过 Windows 防火墙限制:使用 MobaXterm 的 SSH 客户端(不被拦截)
- 明确指定配置文件路径:通过
remote.SSH.configFile让 Cursor 知道配置文件位置
关键要点
- ✅ 必须同时配置
remote.SSH.path和remote.SSH.configFile - ✅ 使用固定路径,不要使用临时目录
- ✅ 如果使用
_ssh.exe,必须指定配置文件路径 - ✅ 配置完成后需要重启 Cursor
🎯 其他可能的解决方案
方案 C:修复 Windows 防火墙规则(如果方案 B 不可用)
- 打开"高级安全 Windows Defender 防火墙"(
Win + R→wf.msc) - 创建出站规则:
- 程序:
C:\Windows\System32\OpenSSH\ssh.exe - 操作:允许连接
- 配置文件:根据你的网络类型选择(专用/公用/域)
- 程序:
方案 D:使用 Git for Windows 的 SSH
如果安装了 Git for Windows,可以使用它的 SSH:
{"remote.SSH.path":"C:\\Program Files\\Git\\usr\\bin\\ssh.exe"}🔗 相关资源
- Cursor Remote-SSH 官方文档
- OpenSSH for Windows 文档
- MobaXterm 官网
最后更新:2026年1月14日
标签:Cursor, SSH, Remote-SSH, Windows, 故障排查