使用跳板机连接校内 API 模型

本文记录一下我从校外环境,通过跳板机访问校内 API 模型,并接入 WorkBuddy 的完整实现过程。

成功流程总结(校外 → 跳板 → 校内 API → WorkBuddy)

整体拓扑

你的 Windows 电脑 (校外)
   ↓  SSH -L 8443:api.llm.ustc.edu.cn:443
跳板机 (xxx:6669)
   ↓  校内网络
中科大 API 服务器 (api.llm.ustc.edu.cn:443)

WorkBuddy 发请求时,DNS 被本地 hosts 劫持到 127.0.0.1:8443,SSH 隧道将流量原封不动转发到校内 API 服务器的 443 端口,TLS SNI 和 HTTP Host 头保持不变。

步骤一:修改本地 hosts(管理员权限)

编辑 C:\Windows\System32\drivers\etc\hosts,添加一行:

127.0.0.1  api.llm.ustc.edu.cn

然后执行 ipconfig /flushdns 刷新 DNS 缓存。

目的:让 api.llm.ustc.edu.cn 解析到本地 127.0.0.1,后续 SSH 监听的 8443 才能收到流量。

步骤二:建立 SSH 本地端口转发隧道

在 Windows 终端(CMD / PowerShell / Windows Terminal)执行:

ssh -L 8443:api.llm.ustc.edu.cn:443 My-Jump -N

其中 My-Jump 是已有的 SSH 主机别名(对应 xxx:6669,密钥认证)。
-N 表示不登录 shell,只维持隧道。

可选:将该配置固化到 ~/.ssh/config

Host My-Jump
    HostName xxx
    Port 6669
    User jump-gate
    IdentityFile ~/.ssh/id_rsa
    LocalForward 8443 api.llm.ustc.edu.cn:443
    ServerAliveInterval 30

之后只需 ssh My-Jump -N 即可。

步骤三:验证隧道连通性(curl)

curl -X POST "https://api.llm.ustc.edu.cn:8443/v1/chat/completions" `
  -H "Content-Type: application/json" `
  -H "Authorization: Bearer sk-..." `
  -d '{"model":"glm-5.2","messages":[{"role":"user","content":"您好"}]}'

返回正常 JSON 响应即表示隧道 + hosts 劫持均生效。

步骤四:WorkBuddy 配置自定义模型

进入 WorkBuddy → 设置 → 模型管理 → 添加自定义模型 → OpenAI 兼容

配置项 填写内容
API Base URL https://api.llm.ustc.edu.cn:8443/v1
API Key sk-...(原样)
模型名称 glm-5.2
类型 OpenAI 兼容

注意 Base URL 必须包含端口 :8443 且必须以 /v1 结尾,否则路径拼接错误导致 404。

验证成功标志

WorkBuddy 对话中输入任意问题,能正常获得 deepseek-v4-pro 的回答,且网络请求走本地 8443 → SSH 隧道 → 校内 API,无额外代理配置。

附加

  • 隧道窗口需保持运行,可考虑用 Start-Process 隐藏窗口或改用 autossh 保活。
  • 若校内 API 升级支持 tool_callthinking 参数,WorkBuddy 可能需要调整 models.json 中的 supportsReasoning 等开关,届时再针对性处理。
  • 此方案不影响其他网络流量,仅劫持 api.llm.ustc.edu.cn 域名。