ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

实测|春节返乡路上用 SSH+Tailscale+tmux 三招远程跑 Claude Code,手机也能当牛马

2026/9/28 11:23:54 拓冰建站 浏览量
实测|春节返乡路上用 SSH+Tailscale+tmux 三招远程跑 Claude Code,手机也能当牛马 1. 春节返乡路上为什么我非要把 Claude Code 塞进手机春节返乡的高铁上邻座在刷短视频我在手机上敲tmux attach。这不是段子是我今年春运的真实状态。Claude Code 是个纯命令行工具跑在电脑上你一离开工位就彻底断联。但灵感这东西不讲道理往往在你拎着年货挤地铁、在老家炕上陪亲戚唠嗑的时候突然冒出来。这时候如果手边只有手机那种想干活却够不着电脑的憋屈比加班还难受。所以我把整套远程方案在春节前跑通了一遍核心就三招SSH 负责连回电脑Tailscale 负责让手机和电脑虚拟同网tmux 负责让会话在断网后原地复活。这套组合的好处是免费、全自主可控不依赖任何第三方 App 的付费墙。适合谁适合手里有一台常年开机的电脑家里台式机、公司工位机、或者一台小主机又想在通勤、返乡、走亲戚间隙远程驱动 Claude Code 的人。下面我把可复制的 SSH config、Tailscale 组网步骤、tmux 保活命令全部摊开你照着做就能在手机上把 Claude Code 跑起来。2. 前置准备TaoToken 接入 Claude Code 与三件套安装在折腾远程之前得先保证你电脑上的 Claude Code 能正常调用模型。我这边用的是 TaoToken 的 API 接入方式它兼容 Anthropic 的接口协议配置起来就是改两个环境变量的事。官网在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 注意 API 域名后面不加任何 UTM 参数。先在电脑上把 Claude Code 装好然后配置环境变量。Linux/macOS 写进~/.bashrc或~/.zshrcWindows 用系统环境变量面板export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEY你的TaoToken密钥密钥去控制台拿地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 进去后在 API Keys 页面创建一个复制出来填到上面。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有不同客户端的详细配置说明遇到字段对不上可以翻一下。三件套的安装Tailscale 去官网下对应平台的安装包Windows、macOS、Linux 都有tmux 在 Linux 上sudo apt install tmux或brew install tmuxWindows 用户建议直接在 WSL2 里跑 Claude Code这样 tmux 和 SSH 都是原生体验手机端 SSH 客户端我用的 TermiusiOS 和安卓都有免费版够用。注意Claude Code 必须跑在有 tmux 的环境里Windows 原生 CMD 没有 tmux所以强烈建议 WSL2 或纯 Linux 主机。3. 可复制配置Tailscale 组网 SSH config tmux 保活3.1 Tailscale 组网让手机和电脑虚拟同网Tailscale 的原理是给每台设备分配一个 100.x.x.x 段的私有 IP设备之间走加密隧道直连不需要公网 IP也不用改路由器防火墙。电脑和手机都装上 Tailscale用同一个账号登录它们就自动在同一个虚拟局域网里了。电脑端安装后登录# Linux 安装 curl -fsSL https://tailscale.com/install.sh | sh sudo tailscale up # 会输出一个 URL浏览器打开登录授权登录后查看本机 Tailscale IPtailscale ip -4 # 输出类似 100.101.102.103手机端去 App Store 或应用商店搜 Tailscale安装后用同一账号登录状态显示 Connected 即可。在手机 Tailscale App 里能看到电脑的 100 段 IP记下来SSH 就连这个地址。3.2 电脑端开启 SSH 服务Linux 上确认 sshd 在跑sudo systemctl enable --now ssh sudo systemctl status sshWindows 的话在设置 → 应用 → 可选功能里装 OpenSSH Server然后Start-Service sshd并设为自动启动。WSL2 用户注意WSL 的 SSH 和 Windows 宿主是两套建议直接在 WSL 里跑 sshd端口映射用netsh interface portproxy转发或者干脆用 Tailscale 的 WSL 版本。3.3 手机端 SSH config 与连接Termius 里新建 Host地址填电脑的 Tailscale IP100.x.x.x端口 22用户名填你电脑的登录名认证方式选密钥或密码。密钥方式更安全把手机生成的公钥追加到电脑的~/.ssh/authorized_keys里。连上之后先别急着跑 Claude Code先建 tmux 会话tmux new -s claude这个-s claude是给会话起名方便后面 attach。进去之后正常启动 Claude Codeclaude现在 Claude Code 就跑在 tmux 会话里了。手机 SSH 断线、切后台、锁屏tmux 会话在服务端一直活着。重新连上后tmux attach -t claudeClaude Code 还在原地对话历史、执行进度一条不丢。这就是 tmux 的核心价值——SSH 是脆弱的tmux 是持久的。3.4 让 tmux 更好用的几个配置在电脑上写~/.tmux.conf# 开启鼠标滚动 set -g mouse on # 增大回滚缓冲方便手机上看历史输出 set -g history-limit 50000 # 状态栏显示会话名 set -g status-right #{session_name}改完tmux source-file ~/.tmux.conf生效。手机小屏幕上鼠标滚动和足够大的回滚缓冲能救命Claude Code 输出长的时候你往上翻不会丢内容。4. 验证请求手机端跑通一次完整 Claude Code 交互配置完别急着高兴按下面步骤验证一遍确认整条链路通。第一步手机连上 Tailscale确认状态 Connected。第二步Termius 连 SSH执行tmux ls应该能看到之前建的claude会话。第三步tmux attach -t claude如果 Claude Code 已经在跑直接就能看到界面如果没跑手动claude启动。第四步发一条测试指令比如帮我看看当前目录下有哪些文件并解释 package.json 的作用Claude Code 会调用工具列目录、读文件然后返回解释。这一步验证的是模型调用链路——也就是 TaoToken 的 API 是否正常。如果返回正常说明ANTHROPIC_BASE_URL和密钥都配对了。第五步故意断网测试保活。手机开飞行模式 10 秒再关掉Termius 会显示断线重新连接后tmux attach -t claude看 Claude Code 是否还在。如果还在tmux 保活验证通过。第六步验证长任务。让 Claude Code 跑一个稍慢的任务比如帮我把 src 目录下所有 .js 文件的 var 改成 const改完列出修改清单任务跑到一半时锁屏等两分钟再解锁重连看它是否继续执行完。这一步验证的是断线期间服务端进程不受影响。提示如果手机端 Termius 频繁断连检查 Tailscale 是否被系统省电策略杀掉iOS 上把 Tailscale 设为始终允许后台安卓上关掉电池优化。5. 本篇常见错排查连不上 SSH提示 Connection refused。先确认电脑 sshd 在跑systemctl status ssh看状态。再确认 Tailscale 两端都 Connectedtailscale status能看到对方设备。如果 Tailscale 显示 relay 而不是 direct说明打洞失败走了中继速度会慢但能通不影响功能。tmux attach 提示 no sessions。说明会话没建成功或者被杀了。检查是不是在 SSH 会话里直接tmux new -s claude之后又exit了——exit会杀掉会话。正确做法是tmux new -s claude后按Ctrlb再按d分离会话才持久。Claude Code 报 API 错误 401 或 403。密钥没配对或者过期了。去 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 重新生成一个确认ANTHROPIC_API_KEY环境变量在当前 shell 里生效echo $ANTHROPIC_API_KEY检查一下。注意环境变量要写在 tmux 启动之前如果先开了 tmux 再改环境变量tmux 里的 shell 读不到新值得tmux kill-server重来。手机端中文输入乱码。Termius 的编码设置改成 UTF-8电脑端locale确认是en_US.UTF-8或zh_CN.UTF-8。tmux 里如果显示乱码在~/.tmux.conf加set -g default-terminal screen-256color。Tailscale IP 变了。正常情况下 100 段 IP 是固定的但如果设备重新登录或者账号切换IP 可能变。养成习惯每次连之前tailscale ip -4确认一下或者用 Tailscale 的 MagicDNS 功能直接用设备名代替 IP比如ssh 我的电脑。Claude Code 在 tmux 里颜色错乱。在~/.tmux.conf加set -g default-terminal tmux-256color然后tmux kill-server重启。手机端 Termius 的终端类型也设成xterm-256color。6. 长期编码与 Agent 场景的接入建议如果你只是偶尔在手机上查个进度、发个指令上面这套 SSH Tailscale tmux 就够了。但如果你打算长期在移动端驱动 Claude Code 跑 Agent 任务比如让它在后台持续重构代码、跑测试、生成文档那建议把接入方式换成更省心的方案。TaoToken 这边有专门的 Coding Plan针对长期编码和 Agent 场景做了优化地址是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。它的好处是配额和稳定性更适合长时间挂机跑任务不会因为频繁调用被限流。配置方式跟前面一样改ANTHROPIC_BASE_URL和密钥就行。另外如果你用的是 Claude Code 的 Anthropic 原生接入方式可以参考 https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecodeanthropicutm_campaignrewrite 里的说明它把 Claude Code 的配置细节讲得比较清楚。想先在网页上试试模型对话效果可以打开 https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite 不用装任何东西就能验证密钥和模型是否正常。最后说个我踩过的坑手机端 Termius 的免费版对同时连接的会话数有限制如果你要同时 attach 多个 tmux 会话比如一个跑 Claude Code一个跑日志监控建议在同一个 SSH 连接里用 tmux 的多窗口切换Ctrlb然后按c新建窗口Ctrlb按数字键切换比开多个 SSH 连接省资源也更稳。返乡路上网络抖动是常态tmux 的多窗口 断线重连基本能让你在高铁过隧道的时候也不丢进度。