凭据邮件到手后,5 分钟内你应该已经在远程桌面里了。这页把图形接入、命令行接入、延迟数据和安全加固一次讲完,按顺序照做即可。
每台 Mac mini 交付时默认开启 VNC(5900)与 SSH(22)双通道,凭据在同一封加密邮件里。Tailscale 是可选项,自己装、自己管。
看到完整 macOS 桌面。适合装证书、点 Xcode 图形界面、剪 4K 视频这类离不开鼠标的事。带宽建议 ≥10Mbps。
跑构建脚本、注册 CI runner、rsync 传文件的主通道。对延迟不敏感,2G 网络也能用,是我们推荐的日常方式。
把云端 Mac 拉进你的私有网络,内网 IP 直连,不暴露公网端口。你有完整管理员权限,brew 一行装好。
| 方式 | 协议 / 端口 | 适合 | 不适合 | 延迟敏感度 |
|---|---|---|---|---|
| VNC | RFB / 5900 | 图形操作、装证书、模拟器交互、视频剪辑 | 长时间自动化任务 | 高,建议 <120ms |
| SSH | SSH / 22 | 脚本、CI runner、文件同步、tmux 长任务 | 必须点图形界面的一次性配置 | 低,300ms 也可用 |
| Tailscale | WireGuard / UDP | 多设备接入、关闭公网端口后的隧道底座 | 不想多装软件的极简场景 | 随底层线路 |
如果你本地也是 Mac,什么都不用装。Finder 里按 ⌘K(前往 → 连接服务器),输入凭据邮件里的地址,格式如下,然后填入 VNC 密码即可。
新建连接时填 节点IP:5900,Encryption 选 Prefer on,Picture quality 先用 Automatic,连上后再按下表手动调档。Scaling 建议 100%,避免二次缩放导致文字发虚。
首次连接如提示指纹确认,核对凭据邮件末尾的主机指纹再点接受。密码输错 5 次会触发 60 秒锁定,这是默认防爆破策略,不是故障。
# Finder ⌘K,或直接在终端打开
$ open vnc://203.0.113.10:5900
# 分辨率随会话调整(远端执行)
$ displayplacer "id:main res:1920x1080 hz:60"
✓ connected: mini-tokyo-07 (M4, 24GB)
VNC 手感由「分辨率 × 色深 × 压缩质量」三个变量决定。原则:先降分辨率,再降色深,最后才动压缩质量——压缩伪影比低分辨率更影响读代码。
| 档位 | 分辨率 | 色深 | JPEG 质量 | 估算带宽 | 适用网络 |
|---|---|---|---|---|---|
| 流畅优先 | 1280×720 | 16-bit | 4/9 | 3~5 Mbps | 4G 热点、跨洋线路 |
| 均衡(默认推荐) | 1920×1080 | 16-bit | 6/9 | 8~12 Mbps | 家用宽带、就近节点 |
| 画质优先 | 2560×1440 | 24-bit | 9/9 | 20~35 Mbps | 有线千兆 + 延迟 <60ms |
色深从 24-bit 降到 16-bit 约省 40% 带宽,写代码肉眼几乎无差;剪辑调色时再切回 24-bit。
下单时上传过 SSH 公钥的话,交付即密钥直连。没上传也没关系,先用邮件里的初始密码登录,然后照第一块终端把密码登录关掉。
# 本地:把公钥推上去(首次用密码验证)
$ ssh-copy-id -i ~/.ssh/id_ed25519.pub admin@203.0.113.10
# 远端:关闭密码登录
$ sudo sed -i '' 's/^#\{0,1\}PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
$ sudo launchctl kickstart -k system/com.openssh.sshd
✓ 此后仅接受密钥认证
# 增量上传项目目录(断点续传)
$ rsync -avzP --exclude .git ./MyApp admin@203.0.113.10:~/work/
# 把远端目录挂载到本地(需 macFUSE)
$ sshfs admin@203.0.113.10:/Users/admin/work ~/remote-work
# 用完卸载
$ umount ~/remote-work
# 开一个会话跑全量归档构建
$ tmux new -s build
$ xcodebuild archive -scheme MyApp -destination 'generic/platform=iOS'
# 按 Ctrl-b d 脱离,断网也不中断
# 回来接上
$ tmux attach -t build
~/.ssh/config 里给节点起别名并加 ServerAliveInterval 30,以后 ssh tokyo 两个词直达,NAT 超时断连也一并解决。选节点前先看这张表:数值是 ICMP ping 中位数(毫秒),越低越跟手。经验口径:<60ms 拖拽接近本地,60~120ms 日常开发无碍,>150ms 建议纯 SSH 或无头模式。
| 发起城市 | → 东京节点 | → 首尔节点 | → 硅谷节点 | 建议 |
|---|---|---|---|---|
| 北京 | 52 | 46 | 152 | 首选首尔,东京互备 |
| 上海 | 38 | 42 | 148 | 首选东京 |
| 深圳 | 48 | 44 | 158 | 首尔与东京均可 |
| 东京 | 2 | 34 | 108 | 本地直连 |
| 首尔 | 33 | 2 | 132 | 本地直连 |
| 新加坡 | 68 | 74 | 168 | 东京略优,VNC 建议均衡档 |
| 洛杉矶 | 102 | 128 | 6 | 首选硅谷 |
想自己复测:各节点的测试 IP 与 mtr 用法在 遇到问题 页的网络自检一节,附带路由追踪提交工单的模板。
物理距离没有软件解法。上表 40ms 与 150ms 的差距,任何压缩参数都追不回来。国内用户默认东京或首尔,美洲用户默认硅谷。
线路一般时把 VNC 切到「流畅优先」档:16-bit 色深 + 中等 JPEG 质量,帧率通常能从 12fps 拉回 25fps 以上,滚动代码不再拖影。
2.4GHz Wi-Fi 的抖动常见 ±30ms,有线可压到 ±3ms。VNC 对抖动比对绝对延迟更敏感——平均 50ms 但抖动大,体感比稳定 80ms 还差。
编译、打包、传文件全走 SSH 后台跑,VNC 只留给必须点鼠标的操作。屏幕不刷新,带宽自然让给数据传输。
机器是你独享的物理节点,加固责任也在你手上。按顺序做完这五条,公网暴露面基本收干净。
/etc/ssh/sshd_config 里的 Port 22 改成高位端口(如 2222),自动化扫描流量立减九成。brew install fail2ban 后启用 sshd jail,默认 5 次失败封 10 分钟,对 CI 无感。# 本地建隧道:远端 5900 映射到本地 5901
$ ssh -N -L 5901:localhost:5900 admin@203.0.113.10
# 另开窗口,连本地端口即可
$ open vnc://localhost:5901
✓ VNC 流量全程走 SSH 加密
如果这台机器只做 self-hosted runner,建议全程不开图形会话:更少暴露面、更少内存占用、零 VNC 带宽。
svc.sh 会生成 LaunchDaemon,开机自启、崩溃自拉起,断线自动重连。security unlock-keychain,签名不再依赖图形会话弹窗。# 关闭屏幕共享(需要时随时可开回)
$ sudo launchctl disable system/com.apple.screensharing
# 注册并常驻 GitHub Actions runner
$ ./config.sh --url https://github.com/org/repo --token XXXX
$ sudo ./svc.sh install && sudo ./svc.sh start
# 构建前解锁签名钥匙串
$ security unlock-keychain -p "$KC_PASS" ci.keychain-db
✓ runner online, no GUI session
症状对号入座,一行命令先修再说;修不好带上现象和已尝试步骤发工单,首响 2 小时内。
| 症状 | 最常见原因 | 一行修复 |
|---|---|---|
| VNC 黑屏 | 屏幕共享服务异常退出 | sudo launchctl kickstart -k system/com.apple.screensharing |
| VNC 卡顿掉帧 | 画质档位超出线路承载 | 色深切 16-bit,JPEG 质量降到 4/9,分辨率降到 1280×720 |
| SSH 连接超时 | 端口改过后仍连 22,或本地防火墙拦截 | ssh -p 2222 admin@203.0.113.10 -v 看握手停在哪一步 |
| SSH 拒绝密钥 | 本地私钥权限过宽 | chmod 600 ~/.ssh/id_ed25519 |
| SSH 频繁断连 | NAT 空闲超时切断长连接 | printf "ServerAliveInterval 30\n" >> ~/.ssh/config |
| 剪贴板不同步 | 远端剪贴板服务挂起 | SSH 执行 killall pboard,系统自动重启该服务 |
| 隧道连不上 5901 | 隧道进程已退出 | 重跑 ssh -N -L 5901:localhost:5900 admin@203.0.113.10 |
更完整的逐步排查(含 Xcode 签名失败、钥匙串解锁)在 故障排查手册
付款后 10 分钟内交付 VNC/SSH 凭据,按天起租,7 天内按未用天数退款。