返回博客
2026 年 8 月 30 日

如何通过 SSH、Tailscale 和 tmux 在手机上使用 Claude Code

通过 SSH、Tailscale 和 tmux 从 iPhone 或 Android 手机使用 Claude Code,让它持续运行在 Mac 或服务器上,并从任何地方重新连接而不丢失会话。

Claude Code 在电脑上已经很好用了,但最近我经常遇到一些不方便打开电脑的场景,却又想看一眼任务进度,或者继续给它安排工作。

最直接的办法当然是 Claude Code 自带的 Remote Control。你可以在电脑上启动 Session,再从手机接着操作。处理一些简单任务时,它很好用。但我想要的不只是控制 Claude Code,而是随时进入完整的开发环境:按需启动多个 Claude Code Session、查看 Git 改动、运行测试、检查日志、重启服务,甚至临时换用另一个 CLI Coding Agent,而不必重新回到电脑前。

所以我没有想办法把 Claude Code 塞进手机,而是让它继续运行在最合适的地方——我的 Mac 或服务器上,再通过手机访问整套开发环境。

这套配置比想象中简单:Tailscale 为手机和开发机建立一条私有网络通道,SSH 提供终端访问,tmux 则负责保留 Claude Code Session。即使我关掉 App、走进信号不好的地方,或者从 Wi-Fi 切换到蜂窝网络,任务也不会因为手机断线而消失。

实际用起来,我可以在书桌前启动一个 Claude Code 任务,出门后再用手机连回来,查看它改了什么、补跑一次测试,或者再开一个 Session。整个过程不需要把 SSH 端口暴露到公网,也不用为了偶尔看一眼进度始终抱着电脑。

下面就沿着实际的连接链路,一步步把这套环境搭起来。

先看整体连接方式

后面的所有配置,其实都围绕这一条链路展开:

手机 → SSH → 开发主机 → tmux → Claude Code

手机先通过 Tailscale 找到开发机,再用 SSH 进入远程终端;tmux 会把 Claude Code Session 留在开发机上,下一次连接时可以直接回到原来的现场。如果 Claude Code 已经能在一台保持在线的 Mac、Linux PC 或 VPS 上正常运行,接下来只需要开启 SSH、让两台设备加入同一个 tailnet、在手机 SSH Client 中保存 Host,并从 tmux 内启动 Session。

通过手机终端控制正在运行的 Claude Code
操作截图 通过手机终端控制正在运行的 Claude Code 手机负责显示和控制会话;Claude Code、代码仓库与开发工具仍然位于 Host。

可以在手机上运行 Claude Code 吗?

可以,但这里的“在手机上”是指从手机控制,而不是让手机承担执行。Claude Code 在 Host 上读取和修改文件、运行 Git、调用编译器并执行测试;手机只显示远程终端并发送输入。

iPhone 和 Android 使用同一套架构:在手机上安装 Tailscale 与 SSH Client,然后连接同一个开发主机。Host 必须保持开机和唤醒。tmux 能抵抗手机断线,但无法让休眠或关机的电脑继续工作。

SSH + Tailscale + tmux 如何协作

组件 职责
Claude Code 在 Host 上读取和修改项目、运行命令并完成 Coding Task
SSH 提供加密远程 Shell,并认证手机到 Host 的登录
Tailscale 让手机与 Host 在不同 Wi-Fi 或蜂窝网络之间保持私有可达
tmux SSH Client 离开后继续保留 Host 端终端会话
Redock 通过 SSH/Mosh 连接,并组织 Host、Project、Action 与 tmux Agent Session
SSH、tmux、Shell 与 Coding Agent 在远程开发机上的关系图
操作截图 SSH、tmux、Shell 与 Coding Agent 在远程开发机上的关系图 SSH 负责连接开发机,tmux 把终端会话留在开发机上,Shell 则在会话中运行 Claude Code、Codex 或 OpenCode。

本文使用的是 Tailscale 网络层 + 标准 SSH 认证。Tailscale SSH 是另一种方案,它还会接管 SSH 的认证和授权,但不是本文配置所必需的。传统 SSH 运行在 tailnet 上时,仍可继续使用现有 SSH Key 和 Server 配置。

准备 Mac、Linux PC 或 VPS

先在 Host 上安装并登录 Claude Code。进入真实项目目录并验证:

cd ~/projects/your-app
claude --version

在本地运行一次 claude,完成登录、Workspace Trust 和项目初始化。手机 SSH 会话将使用同一个 Host User、Home Directory、配置、仓库和工具链。如果命令不存在,请先按照 Claude Code 官方安装文档完成 Host 配置。

如果 Host 是笔记本电脑,还需要检查休眠设置。长期任务更适合保持唤醒的桌面电脑、Mac mini、家庭服务器或 VPS。

开启 SSH

在 Mac 上打开 System Settings → General → Sharing,开启 Remote Login,并只允许需要远程登录的账号访问。macOS 会在此面板显示用户名和 SSH 地址。

在 macOS 共享设置中开启 Remote Login
操作截图 在 macOS 共享设置中开启 Remote Login 开启 Remote Login,并只允许需要远程开发的账号访问。

在 Linux 上安装并启用 OpenSSH Server。Debian 和 Ubuntu 通常使用 openssh-server Package 与 ssh systemd Service。连接手机之前,先确认 sshd 正在监听。

优先使用 SSH Key,不要为了手机访问而把密码认证的 22 端口直接暴露到公网。更完整的概念说明见 Shell、SSH 和 tmux 详解,首次连接步骤见 Redock 快速开始

使用 Tailscale 从任何地方连接电脑

在开发主机和 iPhone 或 Android 手机上安装 Tailscale,登录同一个 tailnet,并确认两台设备都在线。

Host 地址可以使用:

  • 稳定的 Tailscale IP,通常是 100.x.y.z
  • MagicDNS Machine Name,例如 dev-mac 或完整的 dev-mac.example.ts.net

Tailscale 只提供网络可达性。OpenSSH Server 仍在 Host 上监听,SSH Key 或密码仍负责登录认证。因此同一套 SSH 配置既可以在局域网使用,也可以通过 Tailscale 使用,而不必开放公网入站端口。

Mac 和移动设备已连接到 Tailscale
操作截图 Mac 和移动设备已连接到 Tailscale 两台设备需要连接到同一个 tailnet,Redock 才能使用私有地址。

不要只在两台设备连接同一个 Wi-Fi 时测试,还应关闭手机 Wi-Fi,通过蜂窝网络验证。更多步骤见 Tailscale 配置指南

从手机连接

到这里,其实任何可靠的 SSH Client 都已经可以连接开发机。真正的麻烦通常在用了几次之后才出现:每次拿起手机,都要重新找到正确的 Host、进入仓库目录、从 tmux 列表里辨认 Session,再输入 Agent 或测试命令。原本只是想花一分钟看一眼进度,结果前面的准备操作反而占了大半时间。

这正是 Redock 比较适合登场的地方。它可以把连接保存为 Host,再用 Project 关联这台 Host 和仓库目录,并提供回到对应终端或 tmux Session 的直接入口。底层仍然是你自己机器上的标准 SSH 和 tmux,Redock 解决的是手机上反复寻找和恢复开发上下文的麻烦。

在 Redock 中添加一个 Host:

字段
Host Tailscale IP 或 MagicDNS Name
Port 22
Username macOS 或 Linux 账号名
Authentication SSH Private Key,或 Host 允许的密码
使用 Tailscale 地址配置的 Redock Host
操作截图 使用 Tailscale 地址配置的 Redock Host 将 Tailscale IP 或 MagicDNS 名称作为 Host,同时继续使用标准 SSH 认证。

连接后先运行 pwdhostname。如果成功,再进入仓库并执行 claude --version。命令在桌面终端可用、但 SSH 中不可用,通常说明 SSH Login Shell 的 PATH 与本地交互式 Shell 不同。

使用 tmux 让 Claude Code 持续运行

tmux 应安装在 Host,而不是手机:

# macOS with Homebrew
brew install tmux

# Debian or Ubuntu
sudo apt install tmux

从 SSH 会话进入项目,创建命名 Session,再启动 Claude Code:

cd ~/projects/your-app
tmux new -s claude
claude

此后可以关闭 App 或断开 SSH。稍后重新连接并执行:

tmux attach -t claude

如果希望 Session 不存在时创建、存在时直接 Attach,可以使用:

tmux new -As claude

Redock 可以管理、创建、Attach 和 Restore 同一批标准 tmux Session,因此无需在手机上反复输入和记忆所有命令。具体配置见 tmux 指南

Redock 中恢复后的 tmux 终端会话
操作截图 Redock 中恢复后的 tmux 终端会话 手机离开期间,任务和终端输出仍然保留在远程 Host 上。

一套实际的手机 Claude Code 工作流

有了 Project 和 Session 之间的关联,就不用每次都从开发机、仓库目录和 tmux 列表重新找起。一套实际的 Redock 工作流如下:

  1. 打开对应代码仓库的 Redock Project。
  2. Attach 命名的 Claude Code tmux Session。
  3. 发送边界明确的任务、约束和验证命令。
  4. 收起手机,让 Claude Code 在 Host 上执行。
  5. Agent 请求输入或完成后,重新连接同一个 Session。
  6. 查看 git diffgit status,不要只依赖 Agent 的总结。
  7. 运行相关 Test、Lint 或 Build。
  8. 确认修改和验证结果后再 Commit、Push。

手机应该是 AI Coding Control Surface,而不是 Tiny Laptop。它适合分配任务、回答问题、查看小范围 Diff、检查日志和触发确定的测试;大量手工编辑和完整 Code Review 仍更适合桌面屏幕。

更完整的多 Agent 架构见 2026 远程 AI Coding 技术栈,移动终端选择见 2026 年最佳移动 AI Coding 终端

Claude Code 已有 Remote Control,为什么还要 SSH?

Anthropic 目前已经在 Claude Mobile App 提供 Code Tab,并提供 Remote Control,可以从 iOS、Android 或浏览器继续本地 Claude Code Session。执行和文件访问仍留在你的机器上,但 Claude Code 对话会通过 Anthropic Service 同步。这是只需要控制 Claude Code 时最直接的第一方方案。

选择 更适合
Claude Remote Control Claude Code 对话、Permission、进度、文件和第一方 Mobile UI
SSH + Tailscale + tmux 完整 Shell、Git、日志、测试、构建、部署、任意 TUI 与直接 Session 控制

SSH 工作流不绑定单一 Agent。同一终端可以运行 Claude Code、Codex、OpenCode、数据库 Console、Test Watcher 或部署工具。Remote Control 和 SSH 也可以同时使用:在 tmux 中运行 Claude Code 并开启 Remote Control,同时保留 SSH 处理开发环境中的其他工作。

故障排查

claude: command not found

分别在本地和 SSH 中运行 which claude。如果只有 SSH 失败,需要修复 Remote Login Shell 的 PATH,而不是在手机安装另一份 Claude Code。

SSH connection refused

Remote Login 或 sshd 未开启、Host 正在休眠、地址错误,或 Firewall 拒绝 22 端口。先在同一局域网测试 SSH,再测试 Tailscale 地址。

Tailscale 已连接但 SSH 不可用

确认设备属于同一个 tailnet、Host 允许 Tailscale 入站连接、Access Control 允许手机访问 Host 的 22 端口,并确认 OpenSSH 正在监听。Tailscale 可达不等于自动开启 SSH Server。

断开后 Claude Code 消失

Claude Code 可能运行在普通 SSH Terminal,而不是 tmux 中。执行 tmux ls,Attach 命名 Session,并在其中启动 Claude Code。Host 重启或休眠也会停止进程。

tmux 尺寸异常或显示多个 Attached Client

不同尺寸的两个 Client 同时 Attach 会影响 tmux Layout。可以最大化当前终端,执行 tmux attach -d -t claude Detach 旧 Client,或为手机和桌面使用不同 Session。

FAQ

可以直接在 iPhone 本地运行 Claude Code 吗?

不能像普通本地 CLI 那样运行。Claude Code 运行在 Mac、Linux PC 或 VPS 上,iPhone 通过 SSH 控制远程终端会话。

可以在 Android 手机上使用 Claude Code 吗?

可以。让手机与 Host 加入同一个 Tailscale tailnet,通过 Android SSH Client 连接并 Attach Host 端 tmux Session。

手机断开后 Claude Code 会继续运行吗?

只要它运行在 tmux 中,且 Host 保持唤醒和联网,就可以继续运行。tmux 不抵抗 Host 关机。

必须使用 Tailscale 吗?

不必须。局域网、其他 VPN 或经过谨慎加固的公网 SSH 入口也可以工作。

应该使用 Claude Remote Control 还是 SSH?

只需要第一方 Claude Code 界面时选择 Remote Control;需要完整 Shell、其他 Coding Agent、Git、日志、测试、构建或部署命令时选择 SSH。

控制你已经在使用的开发主机

Redock 通过 SSH 或 Mosh 从 iPhone 或 Android 连接你自己的开发主机,用 Project 组织 Host 和工作目录,将重复检查保存为 Action,并让 tmux Session 与 CLI Coding Agent 更容易创建、Attach 和 Restore。代码和工具仍留在你的机器上。

官方资料与延伸阅读

在手机或平板上试试 Redock

用手机控制运行在自己主机上的终端编码 Agent