当前位置: 首页 > news >正文

Windows VS Code Remote-SSH:解决扩展市场无法访问与 Codex localhost 登录失败

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 本地服务。

解决思路如下:

  1. 让 Linux 服务器通过 SSH 反向端口转发,使用 Windows 本机的 HTTP / Mixed 本地服务;
  2. 在 VS Code 的远程设置中填写对应服务地址;
  3. 当 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:1456

3. 前提条件

开始前请确认:

  1. Windows 本机已经启动可正常使用的网络连接工具;
  2. 该工具已经处于可用状态;
  3. Windows 本机存在 HTTP 或 Mixed 本地服务端口;
  4. 已经能从 VS Code 或 PowerShell 通过 SSH 登录 Linux 服务器;
  5. Windows 已安装 OpenSSH 客户端。Windows 10 / 11 通常默认已经安装。

本教程中的端口仅为示例。

7890为 Windows 本机服务端口示例;
18888为远程服务器监听端口示例;
1456为 Codex 登录回调端口示例。

请根据实际端口进行替换。


4. 第一步:确认 Windows 本机服务端口可用

本地网络工具常见的 HTTP / Mixed 服务端口包括:

7890 7897 1080 10808 10809

其中7890很常见,但并不是固定值。

在 Windows PowerShell 中测试。假设端口为7890

curl.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的位置都替换为:

7897

5. 第二步:配置 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-servergpu-servermy-server
HostNameLinux 服务器 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 28080

6. 第三步:重新通过 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-server

7. 第四步:在远程服务器验证反向转发是否创建成功

重新连接远程服务器后,在 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-server
  • RemoteForward配置没有被读取;
  • 服务器端不允许反向端口转发;
  • 18888已被其他程序占用。

先执行:

ss-lnt|grep18888

如果没有输出,说明 SSH 反向转发没有创建成功。

请确认:

  1. Windows SSH config 已保存;
  2. Remote-SSH 已完全关闭并重新连接;
  3. VS Code 连接的主机别名确实是remote-server
  4. Windows 本机服务端口本身可用。

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:1456

9.2 在 Windows 浏览器中打开映射后的地址

不要再直接打开:

http://localhost:1456

而是在 Windows 浏览器中打开:

http://127.0.0.1:24560

如果 Codex 输出完整回调地址,例如:

http://localhost:1456/callback?code=xxxx

则将其中的:

localhost:1456

替换为:

127.0.0.1:24560

最终在 Windows 浏览器中打开:

http://127.0.0.1:24560/callback?code=xxxx

完成授权后,远程服务器上的 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:34560

10. 两类 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 服务端口为7890
  • Linux 服务器地址为192.168.XX.XX
  • Linux 用户名为yourname
  • SSH Host 别名为remote-server
  • 远程监听端口使用18888
  • Codex 登录回调端口为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 3

11.2 Windows 本机服务测试

curl.exe-I-x http://127.0.0.1:7890 https://marketplace.visualstudio.com

预期关键输出:

HTTP/1.1 200 Connection established

11.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 established

11.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 Window

11.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:24560

12. 常见问题排查清单

问题 1:Windows 本机服务端口无法连接

检查:

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-server
  • SSH config 保存位置或格式错误;
  • RemoteForward没有生效;
  • 远程 SSH 服务端不允许端口转发;
  • 18888已被占用。

问题 3:VS Code 仍然无法搜索扩展

确认以下内容:

  1. 远程终端执行以下命令已经成功:

    curl-I-xhttp://127.0.0.1:18888 https://marketplace.visualstudio.com
  2. VS Code 修改的是Remote Settings,不是本地 User Settings;

  3. 远程设置中填写的地址是:

    http://127.0.0.1:18888
  4. 已执行:

    Developer: Reload Window
  5. 当前仍然通过remote-server连接,而不是直接通过 IP 连接。


问题 4:Codex 登录时浏览器打不开 localhost

确认:

  1. Codex 输出的端口是多少;
  2. ssh -L命令右侧端口是否与 Codex 输出一致;
  3. 浏览器访问的是 Windows 映射端口,而不是远程端口;
  4. PowerShell 中建立转发的窗口没有关闭。

例如远程端口为1456时:

ssh-L 24560:127.0.0.1:1456 remote-server

浏览器访问:

http://127.0.0.1:24560

13. 总结

本教程使用以下组合:

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 页面。
http://www.cnnetsun.cn/news/3028690.html

相关文章:

  • 终极指南:如何在Windows 10/11上使用IPXWrapper重温经典游戏联机
  • 程序员高频会议自救:实测5款会议记录工具,解决技术评审纪要痛点
  • IDEA vs VS Code vs Eclipse:百万行代码实测对比(CPU占用/启动耗时/插件兼容性三维打分)
  • 工程中itk库依赖的独立性设计
  • GPT Plus 低价渠道不稳定?稳定充值前先看这份对比
  • eDP一分二转接板BH-6M80E,让双屏显示更简单
  • 微信坚果云收件箱小程序,文件收集(图片视频PDF...各类文件都能收)
  • wwdc-downloader:一行命令批量下载 WWDC 全部视频和资料
  • 解放创意:用AI魔法将单张图片瞬间分层为专业PSD文件
  • vs中文弹窗乱码
  • 创业公司线上服务频繁崩溃,十年老板总结全链路排查方案
  • AI 金悦诚启停电池智能功率 MOSFET 完整选型方案
  • 国产开源智能体操作系统在京发布 加速全栈智能终端生态建设
  • 彻底解决百度网盘分享失效难题:5分钟掌握永久文件分享的秒传技术
  • 本地能跑,上线就崩:文件预览服务的五个隐蔽坑与排障实录
  • Rust 的 Arc<Mutex<T>> 用法
  • 【小白向】新手专属优化部署包,一键部署 OpenClaw v2.7.9 跳过繁琐环境调试(最新安装包)
  • 游戏发布流程商店上架与版本更新
  • 软件服务定位器管理化的服务查找获取
  • Spring Boot AOP 拦截链设计模式
  • 操作系统性能分析:系统调用跟踪与资源监控
  • 新一代 YL1621 011A 版本LCD 驱动 IC 重磅升级,便携设备显示方案首选
  • 实习一个月总结
  • Photoshop Mac 使用教程Photoshop Mac 2026下载安装教程
  • API中转站百问百答:开发者最关心的20个问题
  • pytest--conftest.py
  • 【小白向】新手从零起步全攻略,一键部署 OpenClaw v2.7.9 零代码走完整套部署流程(最新安装包)
  • 2026:追求语音转文字高准确率的办公创作者怎么选不踩雷
  • 大健康消费新趋势:都市睡眠亚健康现状分析,西安慕思以睡眠科技赋能居家健康新生活
  • MODIS(MOD11A2)中国2000-2026最大值合成白天地表温度(LST)月度数据集