解决 Cursor 无法通过 SSH 连接 Linux 服务器的问题
问题描述
在使用 Cursor 编辑器通过 Remote-SSH 连接 Linux 服务器时遇到连接失败的问题:
- MobaXterm 中可以正常连接:
ssh [email protected] - Cursor 中连接失败:
Cursor 在 Windows 上通过 Remote-SSH 连接 Linux 失败的原因。排查发现 Windows 自带 OpenSSH 受防火墙拦截或配置文件解析错误,而 MobaXterm 的 SSH 客户端可正常工作。解决方案包括修复 MobaXterm 配置文件,或在 Cursor 设置中指定使用 MobaXterm 的 SSH 客户端路径及配置文件,亦可尝试配置 Windows 防火墙规则或使用 Git for Windows 的 SSH 工具。重点在于正确配置 remote.SSH.path 和 remote.SSH.configFile 以绕过系统限制。
在使用 Cursor 编辑器通过 Remote-SSH 连接 Linux 服务器时遇到连接失败的问题:
ssh [email protected]-F /dev/null 可以连接:ssh -F /dev/null [email protected]首先怀疑是 SSH 配置文件的问题。检查用户配置文件:
cat ~/.ssh/config
配置文件内容正常:
Host song123 HostName 10.12.15.111 User song Port 22
在 Cursor 的 PowerShell 中运行:
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(权限被拒绝)
Test-NetConnection 10.12.15.111 -Port 22
结果:TcpTestSucceeded : True
这说明网络层面是通的,问题不在网络。
通过对比发现:
C:\Windows\System32\OpenSSH\ssh.exe)问题很可能是:Windows 防火墙或安全软件拦截了 ssh.exe 的出站连接。
在 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
根本原因:
User "" 语法错误(空字符串导致解析失败)UseRoaming no 是已弃用的选项这就是为什么 ssh -F /dev/null 可以连接(跳过了配置文件),而直接 ssh 失败的原因。
找到 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 行
找到 MobaXterm 的 SSH 可执行文件:
cygpath -w "$(which ssh)"
# 输出示例: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.exe
打开 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:指定远程主机平台类型在 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 连接服务器。
C:\Users\你的用户名\.ssh\config)Host song123 HostName 10.12.15.111 User song Port 22
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"}
}
ssh.exe 被拦截,导致连接失败(错误 10013)remote.SSH.configFile 让 Cursor 知道配置文件位置remote.SSH.path 和 remote.SSH.configFile_ssh.exe,必须指定配置文件路径Win + R → wf.msc)C:\Windows\System32\OpenSSH\ssh.exe如果安装了 Git for Windows,可以使用它的 SSH:
{
"remote.SSH.path": "C:\\Program Files\\Git\\usr\\bin\\ssh.exe"
}

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online