VS Code Remote-SSH 配置局域网代理
前言
1. 案发现场
最近在远程服务器(Ubuntu Docker 容器)上配置 Gemini Code Assist 时,遇到了一个非常折磨人的问题: 点击插件的 Sign in,浏览器弹出了 Google 授权页面,我一路点击确认,最后页面显示 “Make sure you downloaded this app”的时候就无限循环没有进度了。
过去,但检查发现本地上网极其顺滑。经过一番排查才意识到:VS Code 的远程插件(如 Gemini/Cloud Code)其核心进程是跑在服务器上的。 当插件尝试完成 OAuth 鉴权回调或连接 Google API 时,它调用的是服务器的网络。而我的服务器处于内网环境,根本连不上外网,导致插件在“最后一步”由于握手失败而卡死。
深度分析: 起初我以为是本地 Windows 没翻过去,但检查发现本地上网极其顺滑。经过一番排查才意识到:VS Code 的远程插件(如 Gemini/Cloud Code)其核心进程是跑在服务器上的。 当插件尝试完成 OAuth 鉴权回调或连接 Google API 时,它调用的是服务器的网络。而我的服务器处于内网环境,根本连不上外网,导致插件在“最后一步”由于握手失败而卡死。
一、 核心逻辑:谁在访问网络?
在使用 VS Code Remote-SSH 时,网络请求分为两个维度:
- 终端维度:你在 Terminal 里输入的
curl、wget、pip,它们直接调用服务器网络。 - 插件维度:像 Gemini 这种 AI 插件,其核心进程运行在远程服务器上,因此它也必须通过服务器网络访问 Google。
解决方案:将 Windows 电脑作为“网关”,让服务器通过局域网连接 Windows 上的代理软件。
二、 第一步:Windows 端配置 (Clash)
- 开启局域网共享:在 Clash 界面开启 Allow LAN。
- 确认监听地址:打开 PowerShell,输入
netstat -ano | findstr :7890。- 必须看到:
0.0.0.0:7890(表示接受全网段请求)。 - 如果是:
127.0.0.1:7890,请在设置中将bind-address改为*。
- 必须看到:
- 获取内网 IP:在 CMD 输入
ipconfig,记下 IPv4 地址(例如:192.168.1.100)。
三、 第二步:防火墙精准加固 (安全第一)
好的,这部分内容已经为你进行了深度扩充。重点强调了 “软件层面开启(Clash)并不等于系统门神(Windows 防火墙)放行” 的逻辑,这通常是新手最容易卡住的地方。
三、 第二步:防火墙精准加固 —— 破解“看得见连不上”的死局
我在 Clash 里勾选了
Allow LAN,并且netstat也显示在监听0.0.0.0了,但服务器curl依然超时。这是因为 Windows 防火墙极其严格的。默认情况下,它会静默拦截所有来自局域网外部、试图进入电脑 7000 端口以上的 TCP 请求。因此需要设置一个规则打开win防火墙
具体操作步骤:
进入高级设置:
- 在 Windows 搜索框输入 “高级安全 Windows Defender 防火墙” 并打开。
创建入站规则 (Inbound Rule):
- 点击左侧 “入站规则”,在右侧点击 “新建规则...”。
- 规则类型:选择 “端口”。
- 协议和端口:选择
TCP,在“特定本地端口”填入 Clash 的端口(默认
7890)。 - 操作:选择 “允许连接”。
- 配置文件:全部勾选(域、专用、公用)。
- 名称:起个好记的名字,如
Clash-Allow-Server。
精准加固:设置远程 IP 白名单(核心安全步骤):
- 在列表中双击你刚创建的
Clash-Allow-Server。 - 切换到 “作用域” (Scope) 选项卡。
- 找到 “远程 IP 地址” (Remote IP address)。默认是“任何 IP”,这意味着局域网内任何人只要知道你 IP 都能蹭你的代理。
- 改选为 “下列 IP 地址” -> 点击 “添加”。
- 填入你 服务器的内网 IP。
- 在列表中双击你刚创建的
四、 第三步:服务器终端全局代理
编辑服务器的配置文件,让代理永久生效:
Bash
1 | nano ~/.bashrc |
在末尾添加:
Bash
1 | # 代理地址指向 Windows IP |
执行 source ~/.bashrc 生效。
五、 第四步:VS Code 插件联网 (Gemini 激活)
即使终端通了,Gemini 可能还在转圈,因为 VS Code 远程服务端需要独立设置。
- 打开 VS Code 设置 (
Ctrl + ,)。 - 搜索
Proxy,在Http Proxy和Http Proxy填入:http://Windows IP:7890。
3.重启 VS Code 窗口,点击 Gemini 的 Sign in,即可秒开授权页面。
六、 备忘录:如何回退与修复
如果以后不需要代理了,或者环境搞乱了,按以下步骤回退:
1. 撤销终端代理
- 编辑
nano ~/.bashrc,删除添加的export代码行。 - 执行
unset http_proxy https_proxy立即清除当前缓存。
2. 撤销 VS Code 设置
- 进入设置的 远程 标签页,清空
Http Proxy框。
3. 修复防火墙
- 打开“高级安全 Windows Defender 防火墙”,找到
Clash-Allow-Server规则,右键点击“禁用”或“删除”。
结语
配置远程代理最容易踩的坑是 127.0.0.1 和 0.0.0.0 的区别,以及 Windows 防火墙 的静默拦截。只要确保物理链路通畅(Ping 通)且端口开放(监听 0.0.0.0),Gemini 就能成为你服务器搬砖的最强助力!
希望这篇博客对你有帮助!如果 Windows IP 变了,记得去
.bashrc
里改一下地址哦。还需要我补充其他细节吗?
- 本文作者: NICK
- 本文链接: https://nicccce.github.io/TechNotes/Remote-SSH-Proxy/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!