VPN / 上海 Mac ⇄ 日本 VPS 远程开发
远程开发链路 — 项目交接
目标:上海的 Mac(MacBook2019,短期,一年回来几趟)远程到日本(东京)VPS(43.153.159.102)做开发,并按需翻墙。
最终形态:开发走直连 SSH(VSCode 连 vps,活儿都在日本 VPS 上干,稳态编码不需要 VPN);
翻墙走 sing-box,菜单栏一个图标三态切换(直连 / HTTP代理 / 全局TUN)。V2rayU 已从本机退役,Tailscale 降为可选备胎。
sing-box 三态菜单栏开关
全局 TUN 覆盖所有 App
VSCode 直连 vps · 两地同一套
稳态编码不需 VPN
V2rayU 本机退役
晚高峰直连 SSH 待观察
怎么用(机主日常)
🧭 心法:VPN 是给"本机翻墙"的,不是给"写代码"的
- 日常编码:保持 🌐 直连即可,不用开 VPN。SSH 直连日本 VPS 就通;git / npm / 装远程扩展 / 甚至 Copilot 都在日本那头出网,没有墙。
- Remote-SSH 的活几乎全在远端 VPS 上跑,你 Mac 客户端本身很少要外网。
🔌 什么时候才点开 VPN
- VSCode 建立连接的那一下(首连 / 装客户端侧扩展 / VSCode 更新后)——客户端要查 marketplace、update、GitHub 登录,撞墙会卡;先点 🔒 或 🌍 再连。
- 连上之后可切回 🌐,稳态编码照常。
- 在 Mac 上浏览器 / Telegram / 本地 CLI 要访问墙外时。
- 境外(曼谷等):全程 🌐 直连,什么都不用开。
菜单栏三态(SwiftBar 图标,点开即切)
| 🌐 直连 | 什么都不走(境外 / 稳态编码用这个) |
| 🔒 HTTP代理 | 只浏览器等认系统代理的走(轻量),走本机 127.0.0.1:2080 |
| 🌍 全局 TUN | 所有 App 全走(Telegram、codex/claude CLI、UDP 全包,像 iPhone v2box) |
菜单栏图标没出来怎么办 · 三层保险
系统更新后,菜单栏 SwiftBar 图标偶尔起不来(GUI app 启动要过 Apple 公证检查,连不上 Apple 就卡)。这时有两条不依赖菜单栏的后路:
| ① 菜单栏 | 正常时点顶部 🌐/🔒/🌍 图标切换 |
② 桌面 VPN.command | 双击 → 弹选择框选模式,或选「↻ 重启菜单栏图标」把 SwiftBar 拉回来。由系统自带的终端执行,不吃 GUI 公证卡顿,最稳 |
| ③ 终端命令 | 最底层:~/sing-box/setmode.sh direct|http|tun |
②③ 都不依赖会因连不上 Apple 而卡的 GUI 启动,系统更新后照样能切。VPN.command 在 ~/Desktop/,可拖进 Dock。
已做 / 未做
✅ 已完成
- sing-box 三态菜单(SwiftBar,开机自启):🌐直连 / 🔒HTTP代理 / 🌍全局TUN,一键切、显示当前态。切换脚本
~/sing-box/setmode.sh。
- 全局 TUN:root LaunchDaemon
com.singbox.tun(config /etc/singbox-tun/config.json),菜单切换免密(sudoers 只放行两个助手 singbox-tun-up/down),开机默认禁用,只由菜单显式开启。
- 全局下的排除(保 VSCode):VPS IP
43.153.159.102 + tailnet 100.64/10 + 内网 → 直连;所以 VSCode 的 SSH 仍走直连、快,不受全局影响。实测:全局下 curl google 200、ssh vps 直连 OK。
- HTTP代理:用户级 LaunchAgent sing-box(mixed
2080)+ 系统代理。
- VSCode 连
vps(直连公网 IP),曼谷/上海同一套配置,三种模式都快(实测直连 63ms、10MB/6.2s)。
- V2rayU 本机退役(删 app+登录项);VPS Xray 服务端保留不动(MacBook Air 的 V2rayU、iPhone v2box 仍用)。
- 诊断闭环:上海 VSCode 时好时坏 = 客户端撞 github/marketplace 间歇抽风,非通道问题(Tabby 纯 SSH 一直稳可佐证)。
⬜ 未做 / 备选
- 晚高峰直连 SSH 若变烂:备胎 = Tailscale(
vps-jp 100.78.89.95,但实测比直连慢)或 japan-vpn(SSH 套 sing-box 2080)。日常不用。
- 全局=全量走日本:国内站也绕日本会略慢;如要"国内直连、仅墙外走代理",后续加 geoip 分流规则。
- 若某 App 全局下仍不通(少见),单独排查。
环境信息
| 拓扑 | Mac MacBook2019(上海,主力)· Win11(曼谷)· VPS(日本/东京 43.153.159.102 / VM-0-5-ubuntu / Ubuntu 22.04)· iPhone · MacBook Air(仍用 V2rayU) |
| 开发通道 | VSCode Remote-SSH → host vps(直连公网 IP),稳态编码不需 VPN |
| 翻墙客户端 | Mac sing-box 1.13.14(~/sing-box/)。HTTP代理=用户 LaunchAgent com.singbox.proxy(2080);全局=root LaunchDaemon com.singbox.tun(默认禁用,菜单开) |
| 菜单栏 | SwiftBar 插件 ~/sing-box/swiftbar-plugins/vpn.5s.sh(显示 🌐/🔒/🌍,点击切);切换脚本 ~/sing-box/setmode.sh {direct|http|tun} |
| VPS 服务端 | Xray VLESS+Reality :808(flow xtls-rprx-vision,SNI www.apple.com,shortId 6d9ebf4aca87bbb5),config /usr/local/etc/xray/config.json。保留(MacBook Air + iPhone 仍连) |
| Tailscale | 可选备胎,vps-jp 100.78.89.95。实测比直连慢,日常可关 |
| 远程运维 | CC 在 VPS 上,经 void-webui 的 /void/api/local-agent/exec → daemon system.run 遥控 Mac(MacBook2019.local) |
手动命令(一般用不到,菜单已封装)
# 切模式(菜单点击即调用这个)
~/sing-box/setmode.sh direct # 直连
~/sing-box/setmode.sh http # HTTP 代理(系统代理→2080)
~/sing-box/setmode.sh tun # 全局 TUN
# 全局 TUN 守护(免密,菜单已用)
sudo /usr/local/bin/singbox-tun-up # 起(enable+bootstrap)
sudo /usr/local/bin/singbox-tun-down # 停(bootout+disable,开机不自起)
# VSCode SSH(直连,任何模式都走直连,不受全局影响)
Host vps → HostName 43.153.159.102 (User ubuntu, id_rsa)