云计算百科
云计算领域专业知识百科平台

【AI】解决 Cursor 无法通过 SSH 连接 Linux 服务器的问题

解决 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-NetConnection 10.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 "$(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

    2. 配置 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 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 防火墙/安全软件拦截: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, 故障排查

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 【AI】解决 Cursor 无法通过 SSH 连接 Linux 服务器的问题
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!