没有公网 IP、没有 VPN 网关、没有额外客户端。一台最低配云主机 + 一条常驻反向隧道。
四跳,每一跳都只做一件事。
Four hops. Each one does exactly one thing.
frps,只做端口转发。The only public-facing box.frp 自带 SSH Tunnel Gateway,客户端因此不用装 frpc,系统自带的 ssh 就够了。
# /etc/frp/frps.toml —— on the Tencent Cloud VPS
bindPort = 7000
auth.token = "<YOUR_TOKEN>"
[sshTunnelGateway]
bindPort = 2200
一条命令,把 Mac 的 SSH 端口映射成云主机的 6000。
ssh -R :6000:127.0.0.1:22 v0@<VPS_IP> -p 2200 \
tcp --proxy_name home-mac --remote_port 6000 --token <YOUR_TOKEN>
前提:Mac 打开「系统设置 → 通用 → 共享 → 远程登录」。
Requires Remote Login enabled on macOS.
断网、重启、休眠唤醒后自动重连。这一步决定了它是「玩具」还是「能用的东西」。
<!-- ~/Library/LaunchAgents/com.me.frp-ssh-tunnel.plist --> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <dict> <key>NetworkState</key> <true/> <!-- 有网就拉起 --> <key>SuccessfulExit</key> <false/> <!-- 退出就重来 --> </dict>
SSH 侧再配 ServerAliveInterval 30 + ExitOnForwardFailure yes,
让半死的连接尽快失败、尽快被 launchd 重建。
Fail fast, restart fast — that is the whole trick.
任意 SSH 客户端,连云主机的 6000 端口,落地就是家里的 Mac。
ssh me@<VPS_IP> -p 6000
进去之后开 tmux,跑 Claude Code、git、sbatch —— 和坐在电脑前完全一样。
| 问题 Problem | 处理 Fix |
|---|---|
| Mac 上开着 VPN 代理 → 慢到没法用 | 最容易踩、也最影响体验的一个。VPN 客户端会接管系统路由,隧道的出向流量被绕去 VPN 网关再折返,往返路径被拉长几倍 —— 表现为打字回显延迟、日志滚动一顿一顿,但机器本身并不慢。 做法:在 VPN 的分流 / 排除规则里让云主机地址走直连;或在不需要访问内网时先断开 VPN。VPN 重连会打断隧道,launchd 会自动重建。 A VPN client that takes over routing pushes the tunnel's traffic out through its gateway and back, stretching the round trip — keystroke echo and log scrolling turn laggy. Exclude the cloud host from the VPN's split-tunnel rules, or disconnect the VPN when you don't need internal access. |
| Mac 睡眠后隧道断 | 用 caffeinate 或电源设置阻止休眠;注意 App Nap 会冻结后台进程的保活计时器,终端 App 需排除在外。Prevent sleep; exclude the terminal app from App Nap. |
| 端口暴露在公网 | Mac 只开公钥登录(禁密码)、云主机装 fail2ban、隧道端口用安全组限制来源 IP。 Key-only auth, fail2ban, and a source-IP allowlist on the tunnel port. |
一句话:把「算力」和「操作面」彻底解耦。
In one line: it decouples where the compute is from what you hold in your hands.
平板只负责显示字符和收键盘。编译、训练、推理全在 Mac 和公司集群上跑,所以 8 寸小平板和顶配笔记本体验一样。
通勤、排队、沙发上 —— 三十秒就能连上,看一眼训练 loss、改一行配置、重新 sbatch,不用开电脑。
tmux 跑在 Mac 上,隧道断了、平板锁屏了、换 Wi-Fi 了都无所谓,重连后现场原封不动。
公司集群那侧什么都不用改 —— 该走的 VPN、该有的权限,全部由 Mac 用原有方式访问。隧道只到 Mac 为止。
frp 的 SSH 网关模式让 Mac 直接用系统自带 ssh 拨出,不装 frpc、不留后台守护进程,只有一个 launchd 条目。
云主机只转发字节流,不做计算。最低配轻量服务器足够,一个月一杯咖啡的钱。
反向连接意味着路由器零配置:不开端口、不要公网 IP、不怕运营商 NAT,换宽带也不用重配。
Claude Code 这类 CLI Agent 本来就是「一句话 → 它干活 → 你看结果」。输入量小、输出是文本,恰好是小屏 + 触摸键盘最擅长的形态。
| 如果你… | 那么 |
|---|---|
| 跑长任务(训练 / 批处理) | 价值最大:你要的只是随时看一眼、改一点、再提交一次 |
| 重度用 CLI Agent | 交互几乎全是文本,小屏没有短板 |
| 需要 GUI / IDE 调试 | 不适合,这条路只解决终端场景 |