博客/SSH + Tailscale 教程

用 SSH + Tailscale,在 iPhone 上跑 Claude Code

2026-07-17

本教程搭建的结构:开发机(家里的台式机、公司工作站或 VPS)加入一个私有 Tailscale 网络,iPhone 在任何地方通过 SSH 连上去,不需要端口转发,也不需要公网 IP。Claude Code 在机器上的 tmux 里运行,手机充当它的终端。

为什么不直接暴露 SSH?

把 22 端口开到公网等于邀请扫描器和爆破。tailnet 让 SSH 只对你自己的设备可达,并通过 WireGuard 端到端加密。

第一步:让开发机加入 Tailscale

# Linux
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

# macOS: install the Tailscale app and sign in

登录你的账号后,机器会得到一个稳定的 100.x.y.z 地址,开启 MagicDNS 的话还有 devbox 这样的名字。用 tailscale status 验证。

第二步:为 iPhone 生成 Auth Key

Tailscale 管理控制台创建一个 Auth Key。ServerCC 用它在 App 内部加入你的 tailnet——不需要在 iOS 上安装全局 Tailscale VPN。可重用密钥更省事;ServerCC 会把它存进 iOS 钥匙串。

第三步:在 ServerCC 中添加服务器

1

主机:填 Tailscale IP(100.x.y.z)或 MagicDNS 名称(devbox

2

认证:密码或 SSH 密钥(支持加密密钥)

3

打开通过 Tailscale 连接,粘贴 Auth Key——细节见 Tailscale 文档

先在 Wi-Fi 下连一次确认,然后切到蜂窝网络再试:结果一样。App 以临时节点身份加入 tailnet 并在其上桥接 SSH,手机上的其他应用不受任何影响。

第四步:跑起 Claude Code——然后放心关 App

打开工作区,点 Claude Code,它会在开发机的 tmux 持久会话中启动。之后锁屏或者断网都没关系,任务在服务器上继续跑。重新打开 ServerCC 会回到同一个会话,长任务还可以在完成时推送通知

排障

  • Auth Key 无效/过期——在管理控制台轮换后更新服务器配置
  • 无法路由到主机——开发机离线或退出了 tailnet;在那台机器上查 tailscale status
  • tmux 里 "claude: command not found"——PATH 要配在 .bashrc/.zshrc,别只放 profile

更多移动工作流内容:Claude Code 手机版指南 · 手机上的 tmux