欢迎光临
我们一直在努力

在 Cursor Remote SSH 中使用 Codex 扩展:一次性完整配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}

前言

在本地 Cursor 中安装并登录 Codex 后,切换到 Remote SSH 窗口,有时会再次出现未登录、请求失败或连接中断等问题。

这类问题通常不是插件本身损坏,而是因为 Remote SSH 模式下,本地环境和远程环境彼此独立:

本地电脑:运行 Cursor 界面
远程服务器:运行项目、终端和远程扩展

因此,本地已经登录并不代表远程扩展也能直接读取同一份认证状态;本地终端能够联网,也不代表远程扩展进程继承了相同的网络配置。

本文记录一套适用于 Windows 本地端和 Linux 远程端的排查方法。

本文只讨论正常的远程开发、认证同步和组织授权网络环境配置。远程服务器如不具备合规的服务访问条件,应联系服务器或网络管理员处理。


1. 先确认 Codex 扩展运行在哪一端

在 Cursor 通过 Remote SSH 打开服务器目录后,扩展可能有两种运行位置:

  • Local:运行在本地电脑。
  • SSH: <远程主机>:运行在远程服务器。

在扩展页面找到 Codex,确认它是否显示:

Installed in SSH: <远程主机>

如果显示:

Install in SSH: <远程主机>

说明当前只安装了本地版本,需要为远程主机安装扩展。

远程 Codex 扩展通常会从远程用户目录读取配置:

~/.codex/

因此,后续检查都应在 Cursor 的远程终端中执行。


2. 检查本地认证文件

在 Windows PowerShell 中执行:

Test-Path "$env:USERPROFILE\\.codex\\auth.json"

返回:

True

说明本地存在 Codex 认证文件。

文件通常位于:

C:\\Users\\<Windows用户名>\\.codex\\auth.json

auth.json 属于敏感认证信息:

  • 不要上传到 Git 仓库。
  • 不要粘贴到博客、论坛或聊天记录中。
  • 不要复制给其他用户。
  • 仅同步到自己控制且可信的服务器账户。

3. 将认证文件同步到远程 Linux

下面假设 SSH Host 别名为:

dev-server

先创建远程目录:

ssh dev-server "mkdir -p ~/.codex && chmod 700 ~/.codex"

复制认证文件:

scp "$env:USERPROFILE\\.codex\\auth.json" "dev-server:~/.codex/auth.json"

设置权限:

ssh dev-server "chmod 600 ~/.codex/auth.json"

检查文件所有者和权限:

ssh dev-server 'stat -c "%U %a %n" ~/.codex/auth.json'

正常输出类似:

developer 600 /home/developer/.codex/auth.json

需要重点确认三点:

  • 文件位于当前 SSH 用户的主目录。
  • 文件所有者是当前 SSH 用户。
  • 文件权限为 600。
  • 常见错误是使用普通用户连接服务器,却把文件放到了:

    /root/.codex/auth.json

    远程扩展以普通用户运行时,无法读取 root 用户目录中的认证文件。


    4. 检查远程服务器的网络环境

    远程 Codex 扩展由 Linux 服务器发起请求,因此服务器必须具备组织允许的网络访问条件。

    如果服务器需要通过单位、实验室或企业提供的 HTTP 代理访问外部服务,可以配置标准代理环境变量。

    下面使用占位地址:

    http://proxy.example.internal:8080

    临时配置:

    export HTTP_PROXY=http://proxy.example.internal:8080
    export HTTPS_PROXY=http://proxy.example.internal:8080
    export http_proxy=http://proxy.example.internal:8080
    export https_proxy=http://proxy.example.internal:8080
    export NO_PROXY=127.0.0.1,localhost
    export no_proxy=127.0.0.1,localhost

    检查:

    env | grep -i proxy

    如果服务器没有合规的网络出口,不建议通过个人工具绕行。应联系管理员配置服务器允许使用的网络出口或代理服务。


    5. 为什么终端能联网,扩展仍然失败

    一个常见现象是:

    env | grep -i proxy

    在 Cursor 终端中能够看到代理变量,但 Codex 扩展依然无法连接。

    原因是:

    集成终端和远程 Extension Host 不是同一个进程。

    在终端中手动执行 export,只会修改当前 Shell 及其子进程,不会自动修改已经启动的 Cursor Server 和扩展进程。

    因此,需要让代理变量在远程服务启动前就存在。


    6. 将环境变量写入登录配置

    不同 Linux 环境读取的启动文件可能不同,常见文件包括:

    ~/.bashrc
    ~/.profile
    ~/.bash_profile

    可以先检查:

    ls -la ~/.bashrc ~/.profile ~/.bash_profile 2>/dev/null

    如果远程服务通过登录 Shell 启动,通常应检查:

    ~/.profile

    或:

    ~/.bash_profile

    示例配置:

    # Organization-approved proxy for remote development
    export HTTP_PROXY=http://proxy.example.internal:8080
    export HTTPS_PROXY=http://proxy.example.internal:8080
    export http_proxy=http://proxy.example.internal:8080
    export https_proxy=http://proxy.example.internal:8080
    export NO_PROXY=127.0.0.1,localhost
    export no_proxy=127.0.0.1,localhost

    修改后,在当前终端加载:

    source ~/.profile

    或者根据实际文件执行:

    source ~/.bashrc

    但要注意:当前终端加载成功,并不代表旧的 Cursor Server 已经更新。后面仍需重启远程服务。


    7. 配置 Cursor Remote Settings

    在已经连接服务器的 Cursor 窗口中按:

    Ctrl + Shift + P

    打开:

    Preferences: Open Remote Settings (JSON)

    确认编辑的是:

    Remote [SSH: dev-server]

    而不是本地 User Settings。

    如果组织提供 HTTP 代理,可以配置:

    {
    "http.proxy": "http://proxy.example.internal:8080",
    "http.proxySupport": "override",
    "http.proxyStrictSSL": true
    }

    如果文件中已经存在其他设置,应合并到同一个 JSON 对象中。


    8. 检查本地设置是否覆盖远程设置

    Cursor 本地 User Settings 通常位于:

    C:\\Users\\<Windows用户名>\\AppData\\Roaming\\Cursor\\User\\settings.json

    可以在 PowerShell 中搜索代理相关配置:

    Get-ChildItem "$env:APPDATA\\Cursor\\User" `
    –Recurse –File –Filter *.json `
    –ErrorAction SilentlyContinue |
    Select-String –Pattern 'http\\.proxy|proxySupport'

    重点检查 settings.json。

    如果本地 User Settings 中设置了一个仅本地可访问的代理地址,而远程扩展又继承了这个配置,远程 Linux 会把 127.0.0.1 理解为服务器自身,进而连接失败。

    因此:

    • 本地专用地址只应配置在本地环境。
    • 远程扩展应使用服务器能够实际访问的地址。
    • 不要在本地和远程配置中混用不同作用域的 127.0.0.1。

    9. 重启 Cursor Remote Server

    认证文件和环境变量修改完成后,需要重启远程 Cursor Server。

    在 Cursor 中按:

    Ctrl + Shift + P

    执行:

    Remote-SSH: Kill Cursor Server on Host

    部分版本中可能显示:

    Remote-SSH: Kill VS Code Server on Host

    选择对应的远程主机,然后:

  • 保存当前文件。
  • 关闭远程窗口。
  • 重新连接服务器。
  • 打开远程项目。
  • 再次打开 Codex 扩展。
  • 如果仍然存在旧进程,可以完全退出本地 Cursor 后重新启动。

    Windows PowerShell:

    Get-Process Cursor –ErrorAction SilentlyContinue |
    Stop-Process –Force


    10. 检查远程 Codex 进程的环境变量

    重新连接服务器并打开 Codex 后,可以检查相关进程:

    pgrep -af 'extensionHost|codex|cursor'

    进一步查看当前用户进程继承的代理变量:

    for pid in $(pgrep -u "$USER" -f 'extensionHost|codex'); do
    echo "===== PID $pid ====="
    ps -p "$pid" -o pid,ppid,args –no-headers

    tr '\\0' '\\n' < "/proc/$pid/environ" 2>/dev/null |
    grep -iE '^(HTTP_PROXY|HTTPS_PROXY|http_proxy|https_proxy)='
    done

    需要确认:

    • 大写和小写代理变量指向同一个地址。
    • 地址是远程服务器能够实际访问的。
    • 不存在本地电脑专用的回环地址或端口。

    11. 常见错误

    11.1 本地已经登录,远程仍显示未登录

    检查:

    echo "$HOME"
    whoami
    stat -c "%U %a %n" ~/.codex/auth.json

    常见原因:

    • auth.json 放错用户目录。
    • 文件所有者不正确。
    • 文件权限过宽或不可读。
    • 本地认证已经更新,但服务器仍保留旧文件。

    11.2 终端正常,Codex 扩展请求失败

    常见原因:

    • 代理只在当前终端中临时设置。
    • Cursor Server 启动时没有继承环境变量。
    • 修改配置后没有重启远程服务。
    • Local Settings 和 Remote Settings 存在冲突。

    11.3 请求中途断开

    如果扩展提示连接或流式响应中断,可以依次检查:

    env | grep -i proxy
    pgrep -af 'extensionHost|codex'

    然后确认:

    • 服务器网络出口稳定。
    • 代理是组织授权且支持长连接的服务。
    • 远程扩展进程继承了正确环境变量。
    • 旧的 Cursor Server 已经重启。

    11.4 auth.json 权限不正确

    执行:

    chmod 700 ~/.codex
    chmod 600 ~/.codex/auth.json
    chown "$USER":"$(id -gn)" ~/.codex/auth.json


    12. 一份简化的排查顺序

    遇到问题时,可以按以下顺序检查:

  • 确认扩展安装在远程端。
  • 确认 ~/.codex/auth.json 的路径、所有者和权限。
  • 确认服务器具备组织允许的网络访问条件。
  • 检查 Cursor Remote Settings。
  • 重启 Cursor Server。
  • 检查 Codex 进程继承的环境变量。

  • 13. 总结

    Remote SSH 场景下,排查 Codex 扩展问题时,应始终把本地环境和远程环境分开考虑。

    可以将问题归纳为三层:

    认证层:远程用户目录中是否存在有效 auth.json
    网络层:远程服务器是否具备合规、稳定的服务访问条件
    进程层:Cursor Server 和 Codex 进程是否继承了正确环境变量

    只在本地登录、只修改当前终端环境,或者只修改 Cursor 设置中的某一层,往往都不能完整解决问题。

    按照“认证文件 → 远程网络 → Remote Settings → 重启远程服务 → 检查进程环境”的顺序排查,通常能够较快定位问题。

    赞(0)
    未经允许不得转载:171主机测评 » 在 Cursor Remote SSH 中使用 Codex 扩展:一次性完整配置
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址