首先,你的本地电脑必须有一个 HTTP/S 代理服务正在运行。
- 如果你使用的是常见的网络工具(如 v2ray, Clash, Charles 等),它们通常会在本地开启一个端口(常见的如
7890或1080)。 - 请确认你本地代理的端口号(下文假设本地代理端口为
7890)。
我们需要配置 SSH,将远程服务器的某个端口流量转发回本地的代理端口。
方法 A:通过 VSCode 的 SSH 配置文件(推荐)
- 在 VSCode 中按下
F1或Ctrl+Shift+P。 - 输入
Remote-SSH: Open Configuration File并选择你的配置文件(通常是~/.ssh/config)。 - 找到你远程服务器的配置块,添加
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 (以及 Copilot) 去使用这个隧道。
- 连接到远程服务器。
- 打开 VSCode 设置(
Ctrl + ,)。 - 重要: 确保你是在 "Remote" (远程) 标签页下修改设置,而不是 User (用户) 或 Workspace (工作区)。
- 搜索
http.proxy。 - 进行如下设置:
- Http: Proxy:
http://127.0.0.1:10809- (这里的端口必须对应你在第二步中设置的
RemoteForward的第一个端口)。
- (这里的端口必须对应你在第二步中设置的
- Http: Proxy Support: 选择
on或override。
或者,你可以直接编辑远程服务器上的 settings.json 文件,添加以下内容:
{
"http.proxy": "http://127.0.0.1:10809",
"http.proxyStrictSSL": false
}注意:为什么要设置
http.proxyStrictSSL: false? 很多时候,经过代理转发的流量可能会因为 SSL 证书链的问题导致 Copilot 报错(Self-signed certificate),关闭严格 SSL 验证通常能解决 Copilot 无法登录或无法生成代码的问题。
- 重启窗口:在 VSCode 中运行
Developer: Reload Window以确保所有环境变量和代理设置生效。 - 检查 Copilot 状态:
- 点击 VSCode 右下角的 Copilot 图标。
- 或者查看“输出”面板 (
Ctrl+Shift+U),选择 GitHub Copilot。
- 登录:如果之前未登录,现在 Copilot 应该能够通过代理成功弹出登录提示,并允许你使用 GitHub 账号授权。
如果仍然无法连接,请按以下顺序检查:
- 检查端口监听:在远程服务器的终端输入
netstat -an | grep 10809(Linux)。你应该能看到该端口正在处于LISTEN状态。如果没有,说明 SSH 转发配置失败。 - 环境变量干扰:有时终端的环境变量优先级更高。你可以在远程服务器的
~/.bashrc或~/.zshrc中临时添加:export http_proxy=http://127.0.0.1:10809export https_proxy=http://127.0.0.1:10809 - 本地代理允许 LAN 连接:虽然我们是通过 localhost 转发,但确保你本地的代理软件没有开启“仅限本机流量”有时会有帮助(尽管 SSH 隧道通常被视为本机流量)。