Skip to content

Instantly share code, notes, and snippets.

@zezhishao
Last active March 9, 2026 09:20
Show Gist options
  • Select an option

  • Save zezhishao/1534c9f7041ddbbbc29104f08c99263d to your computer and use it in GitHub Desktop.

Select an option

Save zezhishao/1534c9f7041ddbbbc29104f08c99263d to your computer and use it in GitHub Desktop.
VSCode Copilot代理

第一步:准备本地代理环境

首先,你的本地电脑必须有一个 HTTP/S 代理服务正在运行。

  • 如果你使用的是常见的网络工具(如 v2ray, Clash, Charles 等),它们通常会在本地开启一个端口(常见的如 78901080)。
  • 请确认你本地代理的端口号(下文假设本地代理端口为 7890)。

第二步:配置 SSH 远程转发 (Remote Forwarding)

我们需要配置 SSH,将远程服务器的某个端口流量转发回本地的代理端口。

方法 A:通过 VSCode 的 SSH 配置文件(推荐)

  1. 在 VSCode 中按下 F1Ctrl+Shift+P
  2. 输入 Remote-SSH: Open Configuration File 并选择你的配置文件(通常是 ~/.ssh/config)。
  3. 找到你远程服务器的配置块,添加 RemoteForward 参数:
Host my-remote-server
    HostName 192.168.x.x
    User your_username
    # 语法: RemoteForward <远程端口> 127.0.0.1:<本地代理端口>
    RemoteForward 10809 127.0.0.1:7890
  • 10809: 这是我们要在远程服务器上通过映射开启的端口(你可以自定义,只要不冲突)。
  • 7890: 这是你本地电脑上实际存在的代理端口。

保存文件后,你需要断开并重新连接远程服务器以使 SSH 隧道生效。

方法 B:通过命令行临时连接

如果你习惯使用终端直连,可以使用 -R 参数:

ssh -R 10809:127.0.0.1:7890 user@remote_host

第三步:配置远程 VSCode 的代理设置

现在隧道已经打通,我们需要告诉远程服务器上的 VSCode (以及 Copilot) 去使用这个隧道。

  1. 连接到远程服务器。
  2. 打开 VSCode 设置(Ctrl + ,)。
  3. 重要: 确保你是在 "Remote" (远程) 标签页下修改设置,而不是 User (用户) 或 Workspace (工作区)。
  4. 搜索 http.proxy
  5. 进行如下设置:
  • Http: Proxy: http://127.0.0.1:10809
    • (这里的端口必须对应你在第二步中设置的 RemoteForward 的第一个端口)。
  • Http: Proxy Support: 选择 onoverride

或者,你可以直接编辑远程服务器上的 settings.json 文件,添加以下内容:

{
    "http.proxy": "http://127.0.0.1:10809",
    "http.proxyStrictSSL": false
}

注意:为什么要设置 http.proxyStrictSSL: false 很多时候,经过代理转发的流量可能会因为 SSL 证书链的问题导致 Copilot 报错(Self-signed certificate),关闭严格 SSL 验证通常能解决 Copilot 无法登录或无法生成代码的问题。


第四步:验证与登录

  1. 重启窗口:在 VSCode 中运行 Developer: Reload Window 以确保所有环境变量和代理设置生效。
  2. 检查 Copilot 状态
    • 点击 VSCode 右下角的 Copilot 图标。
    • 或者查看“输出”面板 (Ctrl+Shift+U),选择 GitHub Copilot
  3. 登录:如果之前未登录,现在 Copilot 应该能够通过代理成功弹出登录提示,并允许你使用 GitHub 账号授权。

故障排查清单

如果仍然无法连接,请按以下顺序检查:

  • 检查端口监听:在远程服务器的终端输入 netstat -an | grep 10809 (Linux)。你应该能看到该端口正在处于 LISTEN 状态。如果没有,说明 SSH 转发配置失败。
  • 环境变量干扰:有时终端的环境变量优先级更高。你可以在远程服务器的 ~/.bashrc~/.zshrc 中临时添加: export http_proxy=http://127.0.0.1:10809 export https_proxy=http://127.0.0.1:10809
  • 本地代理允许 LAN 连接:虽然我们是通过 localhost 转发,但确保你本地的代理软件没有开启“仅限本机流量”有时会有帮助(尽管 SSH 隧道通常被视为本机流量)。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment