CLI 与 TTY Bridge
netshuttle tty 是 macOS App 二进制内置的 CLI 模式,用于让外部终端连接 NetShuttle 守护进程。它不是独立安装的 OpenSSH 替代品。
NetShuttle 启动外部终端时会构造与下面等价的命令:
/Applications/NetShuttle.app/Contents/MacOS/NetShuttle tty <sessionID>sessionID 可以是:
ConnectionID:创建新的 PTY Shell。ShellID:重新附加已有 Shell。
通常不需要手动运行该命令;菜单栏「打开终端」会选择最近 detached 的 Shell,并在没有可恢复会话时创建新 Shell。
- CLI 连接
TTYBridgeConfig.socketPath指定的 Unix Domain Socket。 - 发送 HELLO,包含 session ID、终端尺寸、
TERM和LANG。 - Bridge 附加或创建 Shell,同步 PTY 尺寸。
- Bridge 返回 READY,CLI 设置原始终端模式。
- stdin 转 DATA 帧写入 Socket,Socket DATA 帧写入 stdout。
SIGWINCH转 RESIZE 帧;退出时恢复终端设置并发送 CLOSE。
1 byte type | 4 bytes big-endian length | N bytes payload主要帧类型:
| 类型 | 用途 |
|---|---|
HELLO | 建立请求和终端信息 |
DATA | 标准输入输出数据,包含 UInt32 flags |
SIGNAL | ShellSignal UInt8 枚举 |
READY | shellID 与能力位 |
CLOSE | 客户端正常退出 |
单帧负载上限为 1 MiB。服务端和 CLI 都会拒绝超限或截断帧。
Socket 路径
Section titled “Socket 路径”默认路径位于 App Sandbox 可访问的临时目录,可通过环境变量覆盖:
NETSHUTTLE_TTY_SOCKET=/path/to/netshuttle.sock不要在不可信用户可写的共享目录中放置 Socket。CLI 与 Bridge 必须属于同一可信安全域。