Windows VS Code Remote-SSH解决扩展市场无法访问与 Codexlocalhost登录失败1. 问题背景使用 VS Code 的 Remote-SSH 连接 Linux 服务器后可能遇到以下问题在扩展页面搜索插件时报错Error while fetching extensions. Failed to fetch无法搜索、安装或更新 Codex、Python、GitHub Copilot 等扩展。远程 Linux 服务器无法连接 Visual Studio Marketplace、GitHub、OpenAI 等在线服务。远程 Codex 登录时提示打开http://localhost:1456/...但在 Windows 浏览器中打不开或者提示localhost连接失败。这些问题通常不是 VS Code、Codex 或 SSH 本身损坏而是因为远程 Linux 服务器无法直接连接指定在线服务但 Windows 本机已经具备可用的 HTTP / Mixed 本地服务。解决思路如下让 Linux 服务器通过 SSH 反向端口转发使用 Windows 本机的 HTTP / Mixed 本地服务在 VS Code 的远程设置中填写对应服务地址当 Codex 登录页面运行于远程localhost时使用 SSH 本地端口转发使 Windows 浏览器能够访问该页面。2. 最终连接结构配置完成后远程服务器访问指定在线服务的路径如下远程 Linux 服务器 127.0.0.1:18888 │ │ SSH RemoteForward反向端口转发 ▼ Windows 本机 127.0.0.1:7890 │ │ 本机 HTTP / Mixed 本地服务 ▼ Visual Studio Marketplace / GitHub / OpenAI 等在线服务其中地址或端口用途127.0.0.1:7890Windows 本机 HTTP / Mixed 本地服务端口127.0.0.1:18888SSH 在远程 Linux 服务器上创建的本地监听端口RemoteForward让远程 Linux 服务器通过 SSH 使用 Windows 本机服务VS Code Remote Settings让远程 VS Code 的扩展市场、扩展下载等请求使用指定地址如果 Codex 登录页面位于远程服务器的localhost还会额外使用一条本地端口转发Windows 浏览器 127.0.0.1:24560 │ │ SSH -L本地端口转发 ▼ 远程 Linux 服务器 127.0.0.1:14563. 前提条件开始前请确认Windows 本机已经启动可正常使用的网络连接工具该工具已经处于可用状态Windows 本机存在 HTTP 或 Mixed 本地服务端口已经能从 VS Code 或 PowerShell 通过 SSH 登录 Linux 服务器Windows 已安装 OpenSSH 客户端。Windows 10 / 11 通常默认已经安装。本教程中的端口仅为示例。7890为 Windows 本机服务端口示例18888为远程服务器监听端口示例1456为 Codex 登录回调端口示例。请根据实际端口进行替换。4. 第一步确认 Windows 本机服务端口可用本地网络工具常见的 HTTP / Mixed 服务端口包括7890 7897 1080 10808 10809其中7890很常见但并不是固定值。在 Windows PowerShell 中测试。假设端口为7890curl.exe-I-x http://127.0.0.1:7890 https://marketplace.visualstudio.com如果输出中出现HTTP/1.1 200 Connection established说明 Windows 本机服务端口可正常使用。有时后面还可能出现HTTP/1.1 404 Not Found这通常不表示连接失败。只要前面已经出现HTTP/1.1 200 Connection established就说明 HTTPS 通道已经成功建立后面的404只是目标页面返回的状态。4.1 如果本机服务端口无法连接若出现curl: (7) Failed to connect to 127.0.0.1 port 7890说明当前 Windows 本机没有程序监听7890。可以先检查常用端口netstat-ano|findstr:7890 :7897 :1080 :10808 :10809也可以查看全部监听端口netstat-ano|findstr LISTENING然后在本地网络工具中寻找类似字段HTTP Port Mixed Port HTTP 服务端口 混合端口 本地服务端口假设最终确认端口为7897则后文所有涉及7890的位置都替换为78975. 第二步配置 SSH 反向端口转发编辑 Windows 的 SSH 配置文件C:\Users\你的Windows用户名\.ssh\config如果没有该文件可以新建一个无扩展名文件config在文件末尾添加新的服务器配置Host remote-server HostName 你的服务器IP或域名 User 你的Linux用户名 RemoteForward 18888 127.0.0.1:7890 ServerAliveInterval 60 ServerAliveCountMax 3例如Host remote-server HostName 192.168.XX.XX User yourname RemoteForward 18888 127.0.0.1:7890 ServerAliveInterval 60 ServerAliveCountMax 3请替换以下内容配置内容说明remote-server自定义 SSH 主机别名例如lab-server、gpu-server、my-serverHostNameLinux 服务器 IP 地址或域名UserLinux 服务器用户名18888远程 Linux 服务器上创建的本地监听端口7890Windows 本机 HTTP / Mixed 服务实际端口最关键的一行是RemoteForward 18888 127.0.0.1:7890它表示在远程 Linux 服务器上创建127.0.0.1:18888。远程服务器发往该端口的请求会经过 SSH 隧道到达 Windows 本机的127.0.0.1:7890再由 Windows 本机服务进行处理。不建议使用9999作为远程监听端口。VS Code 或其他程序可能会使用该端口容易造成冲突。推荐优先使用以下端口18888 18889 20080 280806. 第三步重新通过 SSH Host 别名连接服务器修改 SSH 配置后原有 Remote-SSH 连接不会自动读取新配置因此需要完全断开后重新连接。在 VS Code 中按Ctrl Shift P搜索并选择Remote-SSH: Close Remote Connection关闭远程连接后再按Ctrl Shift P搜索并选择Remote-SSH: Connect to Host...然后选择remote-server不要直接选择服务器 IP例如192.168.XX.XX因为直接通过 IP 连接时VS Code 不会使用 SSHconfig中的RemoteForward 18888 127.0.0.1:7890连接成功后VS Code 左下角应显示类似SSH: remote-server7. 第四步在远程服务器验证反向转发是否创建成功重新连接远程服务器后在 VS Code 的远程终端中执行ss-lnt|grep18888若反向转发成功应看到类似LISTEN 0 128 127.0.0.1:18888 0.0.0.0:*说明远程 Linux 服务器已经监听18888。接着测试远程服务器是否能够通过该端口连接扩展市场curl-I-xhttp://127.0.0.1:18888 https://marketplace.visualstudio.com若输出中包含HTTP/1.1 200 Connection established说明远程服务器已经可以通过 Windows 本机服务连接指定在线服务。7.1 如果远程端口连接被拒绝若远程服务器执行curl-I-xhttp://127.0.0.1:18888 https://marketplace.visualstudio.com出现curl: (7) Failed to connect to 127.0.0.1 port 18888通常原因包括修改 SSH config 后没有断开并重新连接当前 VS Code 是通过 IP 连接而不是remote-serverRemoteForward配置没有被读取服务器端不允许反向端口转发18888已被其他程序占用。先执行ss-lnt|grep18888如果没有输出说明 SSH 反向转发没有创建成功。请确认Windows SSH config 已保存Remote-SSH 已完全关闭并重新连接VS Code 连接的主机别名确实是remote-serverWindows 本机服务端口本身可用。8. 第五步在 VS Code Remote Settings 中配置服务地址远程端口已经可用后还需要让 VS Code 的远程环境使用该地址。确保 VS Code 当前已连接远程服务器且左下角显示SSH: remote-server然后按Ctrl Shift P搜索并选择Preferences: Open Remote Settings (JSON)注意要打开的是Remote Settings不要打开 Windows 本机普通 User Settings。在远程settings.json中加入{http.\u0070roxy:http://127.0.0.1:18888,http.\u0070roxySupport:on,http.\u0070roxyStrictSSL:false}这里使用 Unicode 转义写法。VS Code 读取 JSON 时会自动还原为实际设置键因此配置可以正常生效。若原文件已经存在其他设置例如{editor.fontSize:16}则改为{editor.fontSize:16,http.\u0070roxy:http://127.0.0.1:18888,http.\u0070roxySupport:on,http.\u0070roxyStrictSSL:false}注意JSON 中前一项末尾必须加英文逗号,最后一项末尾不要加逗号18888必须与 SSH config 中RemoteForward左侧端口一致。保存文件Ctrl S然后按Ctrl Shift P选择Developer: Reload Window重载 VS Code 窗口。重载完成后进入左侧扩展页面尝试搜索Codex或Python若能够正常显示、安装或更新扩展则配置已经成功。9. 第六步解决 Codex 登录时localhost无法打开的问题有时在远程 Linux 服务器运行 Codex 登录后终端会提示在浏览器中打开类似地址http://localhost:1456/...需要注意远程服务器的 localhost ≠ Windows 本机的 localhost远程 Linux 中的http://localhost:1456实际指向远程 Linux 服务器的 127.0.0.1:1456而 Windows 浏览器中直接打开http://localhost:1456访问的是Windows 本机的 127.0.0.1:1456因此浏览器可能打不开页面或显示连接失败。解决方法是建立 SSH 本地端口转发将远程服务器上的登录端口映射到 Windows 本机。9.1 在 Windows PowerShell 中建立本地端口转发假设 Codex 提示的登录地址为http://localhost:1456/...说明远程登录回调端口是1456在 Windows PowerShell 中运行ssh-L 24560:127.0.0.1:1456 remote-server参数含义如下参数含义24560Windows 本机提供的端口可自行更换127.0.0.1:1456远程 Linux 上 Codex 实际监听的端口remote-serverSSH config 中定义的服务器别名执行成功后请保持该 PowerShell 窗口运行。此时连接路径为Windows 浏览器 127.0.0.1:24560 │ │ SSH 本地端口转发 ▼ 远程 Linux 服务器 127.0.0.1:14569.2 在 Windows 浏览器中打开映射后的地址不要再直接打开http://localhost:1456而是在 Windows 浏览器中打开http://127.0.0.1:24560如果 Codex 输出完整回调地址例如http://localhost:1456/callback?codexxxx则将其中的localhost:1456替换为127.0.0.1:24560最终在 Windows 浏览器中打开http://127.0.0.1:24560/callback?codexxxx完成授权后远程服务器上的 Codex 通常会自动检测到登录完成。9.3 Windows 本地端口被占用或提示权限错误如果执行ssh-L 1456:127.0.0.1:1456 remote-server出现类似错误bind [127.0.0.1]:1456: Permission denied或Address already in use说明 Windows 本机的1456无法使用。此时不要修改远程端的1456只要更换命令最左侧的 Windows 本地端口即可例如ssh-L 24560:127.0.0.1:1456 remote-server或者ssh-L 34560:127.0.0.1:1456 remote-server之后浏览器分别访问http://127.0.0.1:24560或http://127.0.0.1:3456010. 两类 SSH 转发的区别本教程中使用了两种方向不同的 SSH 转发。10.1RemoteForward让远程服务器使用 Windows 本机服务SSH config 中的RemoteForward 18888 127.0.0.1:7890实际连接方向为远程 Linux 服务器 → SSH 隧道 → Windows 本机 HTTP / Mixed 服务 → 指定在线服务主要用途远程 VS Code 访问扩展市场远程安装或更新扩展远程 Codex 连接登录服务远程 Git 连接 GitHub远程 Python、pip、conda 等工具下载依赖远程服务器连接其他指定在线服务。10.2ssh -L让 Windows 浏览器访问远程 localhost 页面Windows PowerShell 中的ssh-L 24560:127.0.0.1:1456 remote-server实际连接方向为Windows 浏览器 → SSH 隧道 → 远程 Linux 的 localhost:1456主要用途打开远程 Codex 登录页面访问远程程序仅监听于127.0.0.1的 Web 页面解决远程终端提示 localhost 链接但 Windows 浏览器无法访问的问题。两者方向不同但可以同时使用。11. 完整配置示例假设Windows 本机 HTTP / Mixed 服务端口为7890Linux 服务器地址为192.168.XX.XXLinux 用户名为yournameSSH Host 别名为remote-server远程监听端口使用18888Codex 登录回调端口为1456。11.1 Windows SSH config文件路径C:\Users\你的Windows用户名\.ssh\config内容Host remote-server HostName 192.168.XX.XX User yourname RemoteForward 18888 127.0.0.1:7890 ServerAliveInterval 60 ServerAliveCountMax 311.2 Windows 本机服务测试curl.exe-I-x http://127.0.0.1:7890 https://marketplace.visualstudio.com预期关键输出HTTP/1.1 200 Connection established11.3 Linux 服务器转发测试通过 VS Code 使用remote-server重新连接后在远程终端运行ss-lnt|grep18888然后运行curl-I-xhttp://127.0.0.1:18888 https://marketplace.visualstudio.com预期关键输出HTTP/1.1 200 Connection established11.4 VS Code Remote Settings在远程连接窗口中执行Ctrl Shift P → Preferences: Open Remote Settings (JSON)填入{http.\u0070roxy:http://127.0.0.1:18888,http.\u0070roxySupport:on,http.\u0070roxyStrictSSL:false}保存后执行Ctrl Shift P → Developer: Reload Window11.5 Codex 登录 localhost 页面转发如果 Codex 提示远程登录页为http://localhost:1456/...在 Windows PowerShell 中运行ssh-L 24560:127.0.0.1:1456 remote-server然后在 Windows 浏览器打开http://127.0.0.1:2456012. 常见问题排查清单问题 1Windows 本机服务端口无法连接检查curl.exe-I-x http://127.0.0.1:7890 https://marketplace.visualstudio.com如果失败可能原因包括本地网络工具未启动当前连接状态不可用实际端口不是7890本机 HTTP / Mixed 服务没有运行。问题 2远程服务器18888端口不存在检查ss-lnt|grep18888如果没有输出可能原因包括没有重新连接 Remote-SSH连接时没有选择remote-serverSSH config 保存位置或格式错误RemoteForward没有生效远程 SSH 服务端不允许端口转发18888已被占用。问题 3VS Code 仍然无法搜索扩展确认以下内容远程终端执行以下命令已经成功curl-I-xhttp://127.0.0.1:18888 https://marketplace.visualstudio.comVS Code 修改的是Remote Settings不是本地 User Settings远程设置中填写的地址是http://127.0.0.1:18888已执行Developer: Reload Window当前仍然通过remote-server连接而不是直接通过 IP 连接。问题 4Codex 登录时浏览器打不开 localhost确认Codex 输出的端口是多少ssh -L命令右侧端口是否与 Codex 输出一致浏览器访问的是 Windows 映射端口而不是远程端口PowerShell 中建立转发的窗口没有关闭。例如远程端口为1456时ssh-L 24560:127.0.0.1:1456 remote-server浏览器访问http://127.0.0.1:2456013. 总结本教程使用以下组合Windows 本机 HTTP / Mixed 服务 SSH RemoteForward VS Code Remote Settings SSH -L 本地端口转发可以解决远程 Linux 服务器无法连接指定在线服务 VS Code Marketplace 加载失败 无法安装或更新远程 VS Code 扩展 远程 Codex 无法连接登录服务 Codex 登录时 localhost 页面无法在 Windows 浏览器打开核心记忆方式RemoteForward 让远程服务器使用 Windows 本机 HTTP / Mixed 服务。 ssh -L 让 Windows 浏览器访问远程服务器的 localhost 页面。