為什麼我們內建了 Tailscale
如果你跑任何自部署服務 —— 一個 homelab、幾臺後面掛著自家 Tailscale 網路的 VPS、一個小辦公室 —— 你大概在 iOS 上踩過我們一樣的坑:打開 Tailscale App 把隧道起來,切到 SSH App,希望隧道還沒斷、斷了切回去重連。在手機上這個脈絡切換比聽上去重。iOS 後臺積極掛起;Tailscale 必須保持活著 SSH 才能到達私有主機名。
所以我們直接嵌入了 Tailscale SDK。沒有第二個 App。打開 TermAI,隧道是 App 生命週期的一部分。tailnet 裝置出現在 SSH 清單裡就像它們在公網上一樣,WireGuard 加密路徑在底下處理。
前置條件
- Tailscale 帳號(100 臺裝置以內免費)
- tailnet 上至少有一臺已經在跑
sshd的裝置 —— Mac、Linux 伺服器、Raspberry Pi 都行 - iOS 16+ 裝好 TermAI
如果你還沒 tailnet,先去 tailscale.com 註冊,在一臺 Mac 或 Linux 上裝 Tailscale。5 分鐘 —— 我們等你。
在 TermAI 裡啟用 Tailscale
- 打開 TermAI → 設定 → 網路
- 打開 Tailscale 開關
- 首次時 iOS 會請求加入 VPN 設定權限。這是 WireGuard 在 iOS 上的運作方式 —— 系統管隧道,TermAI 跟它通訊。點 允許。
設定提示是一次性的。之後每次打開 TermAI 隧道自動起來。
用 OAuth 登入
開關打開後,TermAI 提示登入。點 用 Tailscale 登入。會跳到 Safari 走 Tailscale OAuth 流程(Google / GitHub / Microsoft / Okta,看你帳號用的哪個),回到 TermAI。
我們用官方 Tailscale OAuth API。密碼不會進 TermAI,我們不存你的 Tailscale 憑證。
登入是每裝置一次。如果你在 iPhone 和 iPad 都登入,兩臺裝置在你 Tailscale 管理控制臺分別顯示 —— 對於想給手機端不同存取權限的 ACL 來說很有用。
你的第一個 tailnet SSH
回到 SSH 清單,點 + 加新連線。不要輸主機名,點表單頂部的 Tailnet 標籤。你會看到當前在線的每臺 tailnet 裝置清單。
點一個 —— 比如名叫 nas 的 homelab 裝置。TermAI 自動填:
- 主機:裝置的 tailnet IP(100.x.y.z)
- 使用者名稱:留空 —— 你填
- 連接埠:22(如果你
sshd跑在別處就覆蓋)
加上使用者名稱,從 TermAI 金鑰管理器選私鑰(或產生新的),儲存。點連線。進去了。
用 MagicDNS 主機名
數字 tailnet IP 能用,但 MagicDNS 讓生活更好。如果你在 tailnet 啟用了 MagicDNS,可以用主機名連 —— ssh nas 而不是 ssh 100.96.4.21。
在 Tailscale 管理控制臺 DNS 下啟用 MagicDNS。TermAI 自動識別 —— 啟用後把 Tailscale 開關重啟一次刷新解析器。之後 SSH 表單的 主機 欄位就直接接受 nas。
疑難排解
Tailscale 裝置不出現在 picker 裡。確認隧道真起來了:設定 → 網路 → Tailscale → 狀態。如果一直說「連接中」,說明你 iOS 沒接受 VPN 設定 —— 重開開關再接受 iOS 提示。
Wi-Fi 上能連,行動網路不能。有些電信商遮蔽 Tailscale 偏好的 UDP;客戶端自動回落到 DERP 中繼但更慢。如果行動網路一直慢,在進階設定裡強制 DERP。
tailnet 連成功但報「Permission denied (publickey)」。隧道起來了;SSH 認證失敗。重查使用者名稱,驗證你的 TermAI 公鑰在伺服器的 ~/.ssh/authorized_keys 裡。這時 tailnet 部分跟問題無關。
最後一件事:Tailscale 在中國大陸建置裡按當地法規停用。如果你出貨那個區域,詳見 /docs/china 的備用網路路徑。
快速事實
- 內建 Tailscale:手機端無需另裝 VPN App
- 設定:填入 Tailscale API Key 和 tailnet;首頁即變成你的裝置列表
- 一鍵連線:線上裝置上有 SSH 和 SFTP 捷徑按鈕
- 無需埠轉發:透過 tailnet 穩定的 100.x 位址從任何地方連私有伺服器
- 兩端一致:iOS 與 Android 內建 Tailscale 完全相同