跳至正文
网络 — 两台 Mac 用 Surge Ponte 互联:文件、远程开发与内网访问

两台 Mac 用 Surge Ponte 互联:文件、远程开发与内网访问

AI 参与说明(Agent:Codex):本文由 Codex 核对 Surge 与 Apple 官方资料、整理操作示例并校对,整理日期为 2026-11-13。执行入口为 Codex Desktop;模型完整标识与 reasoning effort 未取得任务级运行记录。未实际验证读者的双机连接。文中设备名、账户及内网地址均为示例。

两台 Mac 都启用 Ponte 后,可以通过设备名访问对方的开发服务、SSH、文件共享和屏幕共享,也可以让指定请求经另一台 Mac 访问其所在内网。最实用的起点是先连通一个 Web 服务,再按需求开启 macOS 的共享服务。

名称和连接关系

名称含义
Ponte namePonte 界面中的名称;本文用 desk、travel 表示两台 Mac
.sgponteSurge 处理的设备域名,如 desk.sgponte,不是公网 DNS 域名
DEVICE:desk把匹配请求交给名为 desk 的 Ponte 设备
Enhanced Mode增强模式,通过虚拟网络接口接管不遵循系统代理的流量
External ControllerSurge 自身的远程管理接口,与 macOS 屏幕共享不同

Ponte provides the connection path; the destination service must still be running. 注册列表里出现设备,只能说明发现了设备;可用信道数量也不能单独证明 SSH、SMB 或开发服务已经连通,更不能据此认定带宽叠加。

Mac 可以同时作为客户端和服务器。同 iCloud 账户可自动发现,跨账户可显式分享;设备登记、密钥和多数建链信息由应用及 iCloud 管理,通常不需要手写。Ponte 手册

先做一次最小互访

  1. 两端保持 Surge 与 Ponte 运行。在发起连接的一端开启 Enhanced Mode,尤其是要用终端、SSH、Finder 的时候。仅设置 HTTP 系统代理,不能保证原始 TCP 连接进入 Surge。Surge 工作方式
  2. 在 desk 启动一个 Web 服务。例如已安装 Python 3 时,在终端运行下面的命令。它只返回固定文本,不会公开当前目录:
python
# 保存为系统临时位置的 ponte_probe.py,然后执行 python3 ponte_probe.py
from http.server import BaseHTTPRequestHandler, HTTPServer

class Probe(BaseHTTPRequestHandler):
    def do_GET(self):
        body = b"Ponte OK\n"
        self.send_response(200)
        self.send_header("Content-Type", "text/plain; charset=utf-8")
        self.send_header("Content-Length", str(len(body)))
        self.end_headers()
        self.wfile.write(body)

HTTPServer(("127.0.0.1", 8765), Probe).serve_forever()
  1. 在 travel 浏览器打开 http://desk.sgponte:8765/,或在终端执行:
bash
curl --max-time 10 http://desk.sgponte:8765/

预期返回 Ponte OK。测试结束在服务端按 Ctrl+C。交换角色后再测一次,才算验证双向访问。

A .sgponte connection targets loopback on the remote Mac. 因而只监听远端 127.0.0.1 的服务也可以访问,不必为了 Ponte 改成监听 0.0.0.0。域名使用 Ponte 界面中的名称,大小写不敏感。Ponte 使用指南

两台机器在同一局域网时,成功只证明当前 LAN 路径可用。要确认外出能用,让一台临时连接手机热点,保持另一台在原网络,再做相同测试。以 HTTP 响应、SSH 登录和 Surge 请求记录判断,不把 ping 当作应用连通性的验收标准。

日常最有用的四种玩法

文件互访

在被访问的 Mac 打开“系统设置 → 通用 → 共享 → 文件共享”,选择允许共享的文件夹和账户。在另一台 Mac 的 Finder 按 Command+K,输入:

text
smb://desk.sgponte

使用目标 Mac 的本地账户登录。反方向改成 smb://travel.sgponte。Ponte 提供通道,共享目录与读写权限仍由 macOS 决定;挂载共享目录也不会自动建立两台机器的文件同步。共享入口见 Apple 文件共享说明。

SSH 与远程开发

在目标 Mac 的“系统设置 → 通用 → 共享”开启“远程登录”,只允许需要的用户。客户端执行以下命令,将 account 换成目标 Mac 的短用户名:

bash
ssh account@desk.sgponte

成功后命令在目标 Mac 执行,可以查看日志、运行构建或管理开发进程。Apple 明确支持通过 Remote Login 使用 SSH 和 SFTP。Apple 远程登录说明

已有 SSH 开发工具也可以把 desk.sgponte 作为主机名。建议让性能更强、能持续在线的一台负责构建和运行服务,随身的一台负责编辑与查看结果;这是使用安排,不表示 Ponte 自动调度算力。

预览另一台 Mac 的开发服务

若目标 Mac 的应用监听 127.0.0.1:3000,另一台浏览器访问:

text
http://desk.sgponte:3000/

适合预览前端页面、测试 API 或访问个人开发面板。若固定文本测试成功、实际应用失败,检查应用自己的 Host 校验、登录回调、HTTPS 证书和 WebSocket 地址。按应用文档精确允许所需主机名;不要直接关闭全部校验。Ponte 解决连接,应用仍需接受这个访问地址。

屏幕共享

在目标 Mac 开启“系统设置 → 通用 → 共享 → 屏幕共享”,选择允许访问的账户。另一台在 Finder 的“连接服务器”中输入:

text
vnc://desk.sgponte

它适合临时操作图形界面,体验受两端网络、延迟和带宽影响。Apple 的 Screen Sharing 与 Remote Management 不能同时开启;不必为了普通屏幕共享另开 Remote Management。Apple 屏幕共享说明

经另一台 Mac 访问 NAS 和内网

假设 desk 能访问家里的 NAS,地址为 192.168.150.20。先确认 desk 本机访问 NAS 成功,再在 travel 的现有 [Rule] 顶部加入:

ini
IP-CIDR,192.168.150.20/32,DEVICE:desk,no-resolve

然后在 travel 访问该 NAS 原本的地址和端口。需要整个远端网段时,再把 /32 扩大到对应网段。规则必须位于现有私网 DIRECT 规则之前,并在 Rule-Based 模式下使用;规则按首个匹配生效。只合并示例规则行,保留现有 [Rule] 和末尾 FINAL。规则系统说明

若两地都使用相同内网地址,直接按 IP 分流容易把本地设备和远端设备混淆。可以采用官方指南的远端 DNS 映射方案。在 desk 的 [Host] 中加入:

ini
nas.myhome = 192.168.150.20

在 travel 的 [Rule] 前部加入:

ini
DOMAIN-SUFFIX,myhome,DEVICE:desk

之后访问 http://nas.myhome:实际端口/。该域名规则必须在可能触发本地 DNS 的 IP/GEOIP 规则之前;若应用要求特定主机名或 HTTPS 证书,还要单独处理应用侧配置。官方内网映射示例

借用另一台 Mac 的网络出口

先只让一个测试域名走 desk,在 travel 规则前部加入:

ini
DOMAIN,example.com,DEVICE:desk

这表示请求交给 desk。最终是否使用其家庭公网出口,还取决于 desk 对来流的处理;不能只看到 DEVICE:desk 就认定已经获得家庭出口。

需要明确让这台客户端的 Ponte 请求从 desk 直连出去时,可以在 desk 的规则前部使用:

ini
DEVICE-NAME,Travel-Mac,DIRECT

这里的 Travel-Mac 必须替换为客户端的系统设备名称,大小写敏感,不是 Ponte 别名。该规则影响所有匹配此设备名的请求,添加前确认范围,并在请求记录中检查客户端身份、命中规则和最终策略。DEVICE-NAME 规则

先验证一个域名和最终出口,再扩大分流范围。两端不要把默认流量互相交回对方;否则难以判断最终路径,也可能形成转发循环。也不要把“用于 Ponte 穿透的代理”和“远端请求最终访问网站的出口策略”混为一谈。

远程查看和管理 Surge

在被控 Mac 开启相应 Ponte 远程控制许可后,可通过 Surge Dashboard 管理远端 Surge;也可以在已安装并配置好官方 surge-cli 的控制端运行:

bash
surge-cli --remote desk.sgponte:6170 status

6170 是 External Controller 默认端口,按实际设置调整,并完成其认证要求。通过 Ponte 连接时,控制接口可以保持只监听 localhost。它适合看远端请求和排查策略,无需先打开整台 Mac 的远程桌面。Surge 远程管理指南

连接失败时按层排查

现象优先检查
列表可见但 HTTP 测试失败目标服务是否运行、端口是否正确、客户端流量是否进入 Surge、实际信道是否能建链
浏览器能访问,SSH 或 SMB 失败Enhanced Mode、目标共享服务、允许访问的账户和防火墙
同一 Wi-Fi 成功,换热点失败NAT/IPv6 路径、代理辅助穿透及 UDP relay;重新运行 Ponte 检测
Mac 可访问,NAS 失败先在远端 Mac 验证 NAS,再查 LAN DIRECT 抢先匹配和两地网段冲突
简单 HTTP 成功,开发页面异常应用的 Host、TLS、回调及 WebSocket 配置
长时间离开后失联目标 Mac 是否睡眠、Surge 是否退出、网络是否改变;锁屏与睡眠分开验证

当前手册已列出 IPv6 等信道,旧知识库末尾“只支持 IPv4 建链”的说明不能用于概括当前版本。代理辅助穿透需要合格的 Full Cone UDP relay,由向导检测;付费代理线路可能消耗其流量。当前 Ponte 手册、Mac 发布说明

建议按 Web 探针、SSH、文件共享、开发预览、远端内网的顺序逐项验证。本文核对了官方行为和配置语法,未实际运行读者的双机、跨网络与共享认证测试。

关联阅读

博客助手

正在打开博客助手…