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 本地服务。
解决思路如下:
- 让 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:7890 | Windows 本机 HTTP / Mixed 本地服务端口 |
127.0.0.1:18888 | SSH 在远程 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 中测试。假设端口为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的位置都替换为:
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-server |
HostName | Linux 服务器 IP 地址或域名 |
User | Linux 服务器用户名 |
18888 | 远程 Linux 服务器上创建的本地监听端口 |
7890 | Windows 本机 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-server; RemoteForward配置没有被读取;- 服务器端不允许反向端口转发;
18888已被其他程序占用。
先执行:
ss-lnt|grep18888如果没有输出,说明 SSH 反向转发没有创建成功。
请确认:
- Windows SSH config 已保存;
- Remote-SSH 已完全关闭并重新连接;
- VS Code 连接的主机别名确实是
remote-server; - 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参数含义如下:
| 参数 | 含义 |
|---|---|
24560 | Windows 本机提供的端口,可自行更换 |
127.0.0.1:1456 | 远程 Linux 上 Codex 实际监听的端口 |
remote-server | SSH 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?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: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 服务端口为
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 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. 常见问题排查清单
问题 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 仍然无法搜索扩展
确认以下内容:
远程终端执行以下命令已经成功:
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 连接。
问题 4:Codex 登录时浏览器打不开 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 页面。