ethan6945/MiniLink

GitHub: ethan6945/MiniLink

一款 macOS 菜单栏原生应用,用于监控多条网络线路上远程 Mac 的连通性与延迟,并支持一键 SSH、SMB 连接及端口扫描。

Stars: 0 | Forks: 0

MiniLink icon

MiniLink

一款 macOS 菜单栏应用,用于监控并连接到你的远程 Mac ——
通过 LAN、Tailscale 或 Thunderbolt bridge —— 支持一键 SSH 和 SMB、实时延迟,以及内置的 端口扫描器

简体中文 · English

platform swift swiftui license

Status tab — live latency per route with one-click SSH and SMB

Port monitor and common port scan This Mac — local IPs and listening ports Settings tab in Chinese — bilingual UI

## 为什么需要? 如果你将一台 **无头(headless)Mac mini / Mac Studio** 作为家庭服务器、构建机或 AI 设备运行,你可能会为同一台机器处理多个 IP:在家时的局域网地址、外出时的 **Tailscale** 地址,也许还有用于快速文件传输的 **Thunderbolt bridge**。在每次连接之前你都会想:*现在哪条线路是通的?Thunderbolt 线缆插上了吗?SSH 在运行吗?切换网络后我的 SMB 挂载失效了吗?* MiniLink 让你在菜单栏中一眼就能回答所有这些问题——并且只需点击一下即可连接。 ## 功能 - 🚦 **多线路状态** — 为同一台机器定义任意数量的线路(LAN / Tailscale / Thunderbolt / VPN / …);每条线路都会显示实时的连通性指示灯和 **ping 延迟**,并为最快的线路添加标记 - ⚡ **一键连接** — `SSH` 会打开终端并执行 `ssh user@ip`;`SMB` 会在 Finder 中挂载共享(凭据来自你的 Keychain) - 🔌 **端口监控** — 监控你关注的端口(SSH 22、SMB 445、VNC 5900,或你自己的服务),通过最快可达的线路探测,实时查看打开/关闭状态 - 🔍 **常用端口扫描** — 一键扫描约 26 个知名端口(SSH、SMB、AFP、VNC、**Ollama、LM Studio、ComfyUI、Jupyter**、开发服务器等),并允许你将发现的端口添加到监控列表中 - 💾 **SMB 挂载管理器** — 查看当前挂载的共享,并**支持一键弹出**(切换网络后,不再出现 Finder 卡死在失效挂载上的问题) - 🖥️ **"本机" 标签页** — 你的用户名、主机名、各个网络接口的 IP(可复制为 `ssh user@ip` 命令,用于连接*回*本机),以及所有**本地正在监听的端口及其进程名** — 即时查看哪些服务在所有接口上暴露,哪些仅在 localhost 上可用 - 🌐 **英文与中文** — 可在设置中切换,或跟随系统语言 - 🪶 **原生且轻量** — 纯 SwiftUI + Network.framework,无 Electron,无依赖,无遥测;所有数据都保留在你的机器上 ## 安装 从源码构建(需要 Xcode Command Line Tools,macOS 14+): ``` git clone https://github.com/ethan6945/MiniLink.git cd MiniLink ./build.sh open build/MiniLink.app # or drag it into /Applications ``` 首次运行注意事项: - 默认的线路 IP 只是**示例** — 请在弹窗中打开**设置**,填入你自己的 IP、SSH 用户名和线路(可随意增删) - 首次点击 **SSH** 时,macOS 会请求控制终端的权限 — 请点击允许 - 若要实现**开机启动**,请将其放入 `/Applications` 运行 ## CLI 自检 同一个二进制文件也可作为命令行网络检查工具——非常适合用于脚本和调试: ``` ./build/MiniLink.app/Contents/MacOS/MiniLink --check ``` ``` == Routes == LAN 192.168.1.100: reachable 0.3 ms Tailscale 100.101.102.103: reachable 0.6 ms Thunderbolt 169.254.1.1: unreachable == Ports (via LAN 192.168.1.100) == 22 SSH / Remote Login: open 445 SMB file sharing: open ``` ## 工作原理 - **延迟**:每次刷新时对每条线路执行一次 ICMP ping(`/sbin/ping` 子进程)— 无需特殊权限 - **端口探测**:通过 `Network.framework` 的 `NWConnection` 进行 TCP 握手,超时时间为 2 秒 - **本地端口**:使用 `netstat` 获取完整的监听器列表,使用 `lsof` 标注进程名 - **挂载**:从 `mount` 解析,通过 `NSWorkspace` 弹出 - 检查并发执行,并在弹窗关闭时暂停至较慢的频率 ## 使用场景 无头 Mac mini 家庭服务器 · 通过 Tailscale 远程访问你的 Mac · 两台 Mac 之间的 Thunderbolt IP 桥接 · 监控 Ollama / LM Studio / ComfyUI 设备 · 在进行大型 SMB 文件传输前检查哪条线路最快 · 快速查看你的 Mac 在网络上暴露了哪些端口。 ## 许可证 [MIT](LICENSE) © Ethan Tan 关键词:macOS 菜单栏应用、远程 Mac、Mac mini 服务器、SSH 启动器、SMB 挂载管理器、Tailscale 状态、Thunderbolt 桥接、网络延迟监控、端口扫描器、homelab、SwiftUI。