手机远程连接 Claude Code 和 Codex:四套方案与完整配置指南

发布时间:2026/9/9 5:01:56
手机远程连接 Claude Code 和 Codex:四套方案与完整配置指南 那天在地铁上我突然特别想看看家里那台 Linux 小主机上的 Claude Code 跑完没有。这个念头冒出来的时候我才意识到一个非常现实的问题Claude Code 和 Codex 这两个终端 AI 编程工具你装好了、配好了、甚至用 cc switch 把模型切换都折腾明白了但只要人一离开电脑这些能力就全锁在那台机器里了。手机远程连接 Claude Code 和 Codex说白了就一件事把电脑或服务器上的终端会话“搬”到手机屏幕上。手机只承担显示和输入真正执行命令、读取文件、调用模型、跑测试的还是那台远端机器。这个思路听起来简单实际配置过程中会踩到网络不通、会话断开、终端渲染错乱、密钥鉴权失败、切换工具报错等一堆问题。我把自己配过的方案、踩过的坑、验证过的排查路径整理成这篇完整指南希望能帮你有条理地走通整套流程。1. 连之前先想清楚谁是真正的运行环境网络和会话能不能兜底很多人第一次搞远程连接习惯性地先下载 App、填 IP、点连接然后就是漫长的失败重试。其实在动手配置之前有三个认知层面的问题必须先想明白否则后面所有的操作都是打地鼠。1.1 手机只是遥控器不是电脑Claude Code 本质上是一个依赖本地文件系统和终端交互的 Node.js CLI 工具Codex CLI 也一样。它们需要读取工作目录里的代码、运行命令、调用模型 API、维护会话上下文。这些东西全部发生在承载它的那台机器上。远程连接建立的是一条终端通道把远端机器的标准输入、标准输出搬到手机上。这意味着两件事第一带宽要求非常低传输的内容基本都是文本连很差的 4G 信号都能跑第二真正决定体验的是“远端机器的性能”和“终端链路的质量”而不是手机换代有多快。理解了这一点你就不会去纠结“iPhone 能不能跑 Claude Code”这种问题而是会去想“我该用哪台机器常驻运行这些工具”。1.2 网络通道是最大的不可控变量家庭宽带普遍没有公网 IP运营商做了大网 NAT外部设备根本无法直接访问你家路由器后面的电脑。公司网络更麻烦出口防火墙、内网隔离、Wi-Fi 访客网络这些都可能挡住连接。手机蜂窝网络则在运营商 NAT 后面不仅没有入站能力连出站到某些端口也可能被限制。所以远程连接方案的核心不是选一个好看的 SSH 客户端而是先解决“手机怎么找到那台机器”的网络层问题。后面要讲的四套方案本质上是四种不同的网络通道策略组网工具把设备虚拟拉进同一个局域网、云主机做公网跳板、Web 网关把终端服务暴露成网页、远程开发工作区把整个编辑器搬到浏览器。选哪套取决于你手上的网络条件。1.3 会话能不能保住决定了远程体验的生死远程开发最让人崩溃的不是连不上而是明明连了一会儿突然断了再连上去发现刚才 Claude Code 生成到一半的代码、跑完的任务结果、整个会话上下文全丢了。终端里跑着的进程和 SSH 连接的生命周期往往是绑定的。SSH 断开进程收到挂断信号就会退出。解决这个问题要靠终端复用器比如 tmux。tmux 在远端机器上开一个常驻会话Claude Code 跑在 tmux 会话里SSH 断开、手机切网、App 被杀tmux 会话都还在。重新连上之后执行一句 attach所有状态原样恢复。这是远程连接 Claude Code 和 Codex 的必要基础设施后面配置章节会详细讲。2. 四套方案横评从私有组网到浏览器工作区各有什么取舍我实际用过的四套远程连接方案没有一个是可以无脑套用到所有人身上的。每套方案在网络要求、安全模型、移动端体验上差异明显先看清楚再做选择能少走很多弯路。方案网络通道额外资源上手成本手机端体验适合谁私有组网 手机 SSH组网工具把设备拉进同一虚拟局域网无个人设备足够中接近原生终端体验最好希望稳定长期使用、家里有多台设备公网 SSH 直连机器直接暴露公网端口一台有公网 IP 的云主机或宽带低接近原生终端但有安全门槛已有云主机或公网 IP想快速走通浏览器 Web 终端在远端跑一个网页终端服务无但要处理登录鉴权中低浏览器即开即用不用装 App临时用一下、不想装客户端完整远程开发工作区Web IDE 带终端整个开发界面进浏览器性能较好的承载机器中高能改代码、看文件、跑终端移动端有真实改代码需求2.1 方案一私有组网工具 手机 SSH体验最接近桌面这个方案是我目前的主力。核心思路是在电脑/服务器和手机上都安装同一个组网工具让这两台设备跨越互联网组成一个只有你自己的私有虚拟局域网。对于应用层来说它们就像在同一个房间里互相访问时用的是虚拟局域网 IP完全不暴露任何公网端口。市面上常见的组网工具有 Tailscale、ZeroTier 这类。作用跟家里用路由器把几台设备连进同一个局域网类似只不过它帮你跨互联网把设备虚拟地组成一个网。这意味着手机可以直接通过 SSH 访问家里那台主机端口、认证方式都跟局域网内一模一样不需要在路由器上做任何端口映射。优点安全性最高不向公网暴露任何服务端口连续性和稳定性好设备登录后通道一直在。缺点需要多装一个组网客户端首次配置稍有点门槛。如果你问我最推荐哪套我会说第一次尝试远程连接就选它。2.2 方案二公网 SSH 直连最朴素但要守住安全底线如果你手头本来就有一台带公网 IP 的云主机或者家里宽带有公网 IP那方案二最直接直接在承载机器上跑 SSH 服务手机 App 填上公网 IP 和端口就能连。这个方案的上手成本确实低但安全压力也是四套里最大的。SSH 服务暴露在公网上意味着全球的扫描器每时每刻都在探测你的端口、尝试弱口令登录。我见过太多人图省事用默认端口 22、开着密码登录结果被扫爆。公网直连必须做到改用非默认端口、完全禁用密码登录、只允许密钥认证、有条件的话用工具限制来源 IP。云主机还有一个优势是带宽和公网稳定性有保障不像家庭宽带那样受运营商 NAT 限制。如果你已经有云主机这套方案可以当天走通。2.3 方案三浏览器 Web 终端不想装 App 的轻量解法有时候你只是想看一眼任务跑完没有、敲两条命令要我在手机上装一个 SSH 客户端再导入密钥说实话有点重。Web 终端方案解决的就是这个场景。大致做法是在承载机器上启动一个终端网页网关比如 ttyd 或 code-server 内置的终端然后手机用浏览器打开一个网页就能进入承载机器的终端直接在网页里运行 claude 或 codex 命令。优点手机端零安装顺手就能用缺点是安全配置更麻烦。终端是极其危险的能力如果直接把 Web 终端绑在 0.0.0.0 上裸奔公网等于把电脑的控制权送给全网。一定要加登录密码并且通过 HTTPS 加密传输或者让它只监听内部地址再通过组网或 SSH 隧道访问。具体配置后面会讲。2.4 方案四完整远程开发工作区把编辑器也搬到浏览器如果你不只是想在手机上看 Claude Code 的输出而是想在手机或平板上真正改代码、查文件、运行调试那么方案四是更完整的形态。这类方案以 code-server、Coder 为代表本质是把整个 VS Code Web 版跑在服务器上浏览器通过 HTTPS 访问后你能看到一个几乎完整的 IDE 界面。它自带终端终端里可以运行 Claude Code 和 Codex同时左侧还能打开文件树、查看代码、用编辑器修改文件。Codex 自动改代码的时候你手里拿一台 iPad 就能盯着它改碰到问题直接在编辑器里改回去。这对承载机器的性能要求更高因为 IDE 本身要跑在远端流量消耗也比纯终端大得多但换来的是完整的远程开发体验。适合需要在移动端真正干活的场景而不只是“看一眼、跑个命令”。3. 详细配置从 SSH 加固到手机客户端一次走通无论选哪套方案都绕不开几项基础环境的配置。我按实际操作顺序列出来每步都给出可直接执行的命令同时解释这样做的原因。3.1 先把 Claude Code 和 Codex 装好Node 版本与安装命令这是最容易被忽略的一步。很多人远程连接都通了跑 claude 却报错回头检查发现承载机器上的 Node.js 版本太低。Claude Code 和 Codex 都对 Node 版本有要求低于 18 大概率会遇到各种奇怪报错。node -v npm -v如果 node 版本低于 18建议先升级到 18 或 20 LTS。我踩过 Node 16 跑 Codex 直接报语法错误的坑升级之后就顺了。确认版本没问题后安装两个工具npm install -g anthropic-ai/claude-code npm install -g openai/codex验证安装claude --version codex --version这一步在承载机器上完成。它不依赖远程方案是整个远程连接的前提因为后面所有方案连接成功之后最终跑的还是这两个命令。3.2 SSH 服务端加固密钥登录、换端口、防火墙放行SSH 是远程连接的地基。无论用组网方案还是公网直连最终都通过 SSH 进入承载机器。正确姿势是只开密钥认证、禁掉密码登录、换个非默认端口。先在承载机器上生成一对密钥。我习惯为手机单独生成一对不跟电脑混用ssh-keygen -t ed25519 -C phone -f ~/.ssh/phone_key然后编辑 SSH 服务端配置sudo vim /etc/ssh/sshd_config关键配置项Port 2222 PasswordAuthentication no PubkeyAuthentication yes PermitRootLogin no把公钥写进授权文件ssh-copy-id -i ~/.ssh/phone_key.pub -p 2222 用户名localhost注意改完 SSH 配置重启服务之前务必保留一个已经登录的会话窗口不要全部断掉一旦配置写错你还有机会改回来。重启服务用sudo systemctl restart sshd防火墙放行新端口。这一步要结合你选择的网络方案如果走组网工具就只放行组网网段如果走公网直连至少只放行你自己的 IP但考虑到手机 IP 经常变那就必须确保只开了密钥认证。sudo ufw allow from 组网网段 to any port 2222 proto tcp3.3 tmux 保活让会话不被断线带走这部分是整个远程连接里我认为最关键的。没有 tmux手机 App 一锁屏、网络一切换任务就没了有了 tmux一切断开都是视觉上的重连之后一切都还在。安装并创建会话sudo apt install tmux tmux new -s claude比如在 claude 会话里启动 Claude Codeclaude断线后重新连上恢复会话tmux attach -t claude建议开两个会话一个跑 Claude Code一个跑 Codex互不干扰。在 tmux 配置文件 ~/.tmux.conf 里加这么几行能明显提升体验set -g mouse on set -g history-limit 20000mouse 模式开启后你可以用手机触屏在终端里滚动查看完整输出history-limit 调大是为了防止 Claude Code 生成的多行内容被截断丢失。手机上用手指选中终端文本非常痛苦tmux 的复制模式比手机 App 自带的选中好用得多Ctrlb 进入复制模式后按空格开始选中、回车结束输出就被复制到 tmux 缓冲区了。3.4 手机客户端配置Termius 与 Blink Shell手机端我主力用 TermiusiOS 和 Android 都有。它的配置逻辑很直白把承载机器的 SSH 连接信息保存成主机条目再导入手机私钥。步骤是这样在 Termius 里新建 Host填写承载机器的 IP/域名、SSH 端口 2222、登录用户名。在 Key 管理里导入你为手机生成的私钥把 ~/.ssh/phone_key 的内容复制粘贴进去。连接之前进入连接的设置打开 Keep Alive这个功能会定时发送心跳包减少手机切网或待机导致的半开连接。设置终端类型为 xterm-256color这能显著改善 Claude Code 这种终端 UI 应用的渲染效果。iOS 上的另一个选择是 Blink Shell它对 Mosh 协议支持很好网络切换时比纯 SSH 更抗抖动。如果你经常在地铁、电梯这种网络不稳定场景使用Blink 值得研究。3.5 浏览器 Web 终端方案的配置示例ttyd 与 code-server如果你选择了方案三这里给一份经过验证的配置思路。ttyd 能把任意终端命令变成一个网页通常用法是sudo apt install ttyd ttyd -p 7681 -c myuser:123456 tmux attach -t claude这条命令的作用是打开网页后先要求输入用户名密码验证通过后直接进入 Claude Code 所在的那个 tmux 会话。这里我的建议是让 ttyd 只监听本机地址再通过 SSH 隧道或组网工具访问而不是直接绑 0.0.0.0 暴露公网ttyd -i 127.0.0.1 -p 7681 -c myuser:123456 tmux attach -t claude手机 Termius 里配置一条端口转发规则本地端口 7681 转发到远程 127.0.0.1:7681。然后手机浏览器打开 localhost:7681 就能看到一个网页终端通信全程加密在自己的私密链路里非常安全。code-server 的配置也类似。安装后启动code-server --bind-addr 0.0.0.0:8080它会要求设置密码或者通过环境变量 PASSWORD 指定。浏览器打开后会看到一个完整 VS Code 界面内置终端就是承载机器的 shell你可以直接在终端里跑 claude 或 codex。需要强调的是code-server 的流量比纯终端大得多如果承载机器带宽有限体验会明显下降。4. Claude Code 和 Codex 的远程差异配置从环境变量到 cc switch 报错排查连接通、会话保住了接下来要解决的是 Claude Code 和 Codex 在远程场景下的差异化配置问题。它们各自有独立的配置文件和登录机制社区工具 cc switch 又常被用来做模型切换这部分最容易出幺蛾子。4.1 Claude Code 的远程会话配置环境变量与 settings.jsonClaude Code 的配置集中在 ~/.claude/ 目录。远程场景下你最需要关心的是模型和上下文相关配置。比如通过环境变量指定模型export ANTHROPIC_MODELclaude-sonnet-4-20250514 claude也可以写进 ~/.claude/settings.json{ model: claude-sonnet-4-20250514, includeCoAuthoredBy: false }远程会话的上下文管理比本地更敏感因为手机屏幕上滚动上千行输出非常痛苦。我习惯在手机端通过环境变量把输出风格调得更简洁比如用 --output-format text 之类的非交互模式跑一次性任务。真正需要完整交互时再进 tmux 会话里慢慢看。4.2 Codex CLI 的登录与配置Codex 支持两种方式登录 ChatGPT 账号或者直接用 API Key。远程场景下我建议用 API Key因为账号登录有设备绑定逻辑在云主机、家庭服务器上来回登录容易触发风控而 API Key 配置一次就能在任意网络环境使用。注意保护 API Key别写进会同步到公网的配置文件里。Codex 的配置在 ~/.codex/config.toml。很多人在里面配置模型、代理相关参数如果你用默认的官方模型保持最小配置即可model gpt-54.3 cc switch 报错排查本地转发服务处理 Codex 的 /responses 端点失败cc switch 是社区里很常用的切换工具它可以在一台机器上管理 Claude Code 和 Codex 的多套模型配置、账号配置、供应商配置。原理是修改两个工具的配置文件并在本机启动一个本地转发服务把 Claude Code 或 Codex 发出的请求按你的配置转给对应的模型服务。这个工具好用是好用但在远程场景下经常暴露出一个问题当你配置完 Codex 相关设置后运行 codex 命令会卡住然后弹出一段报错大意是“cc switch 的本地转发服务在处理 Codex 的 /responses 端点时失败”。这个报错我查过很多次先说结论它不是网络不通也不是账号有问题绝大多数情况是本地转发服务自己没有正常工作。排查链路按以下顺序走第一步确认转发服务进程有没有起。在承载机器上执行进程查看命令如果找不到相关进程说明服务压根没启动那后续一切都是白搭。第二步确认监听端口。配置里指定的 localhost 端口一定要有进程在监听。如果端口被别的程序占了或者转发服务的监听端口跟配置文件里写的不是同一个就会触发这类失败。第三步检查配置文件。~/.claude/settings.json 和 ~/.codex/config.toml 里的端点地址到底指向哪里。cc switch 改的是这两个文件中的模型供应商地址任何一处宿主地址、端口不匹配转发就会失败。附带说一句新版 Codex CLI 走的是 /responses 这个请求路径如果转发服务版本比较旧、只实现了旧版 chat completions 路径那它收到 /responses 时就会直接报错这通常意味着需要升级 cc switch 到支持新版 Codex 的版本。第四步清理环境变量。很多人在 shell 配置文件里手动 export 过 ANTHROPIC_BASE_URL、OPENAI_BASE_URL 之类的变量。这些环境变量的优先级很高会直接覆盖掉 cc switch 写入配置文件的端点导致流量发到了错误的地方。执行环境变量检查命令看到有冲突的导出语句就删掉然后重开终端再试。这套排查链路走完至少九成的 local proxy failed 类问题都能解决。核心思路是报错关键字越具体越是本地配置问题别一上来就甩锅给网络。4.4 把 Ollama 本地模型接入 Claude Code 的远程注意事项又一个常见组合是“Claude Code cc switch Ollama”也就是把模型调用目标切换到本地 Ollama 服务比如跑 Qwen、Llama 这类开源模型。这个组合在局域网里玩得很开心一旦放到远程场景有几个地方必须提前想明白。Ollama 默认只监听本机 127.0.0.1:11434这是好事不要为了省事把它改成 0.0.0.0。远程连接时你通过 SSH 隧道或组网通道访问承载机器Ollama 仍只需要被本机访问。真正要注意的是资源压力。Ollama 推理非常吃硬件当你在手机上远程发起一个任务时实际上是你家里的承载机器在满负荷运转。笔记本合盖之后就休眠任务直接中断所以承载机器得设置合盖不休眠或者干脆用不带屏幕的小主机。另外本地模型的输出速度远不如云端模型如果手机上有反应慢、半天不出字的错觉那不是 SSH 链路的问题而是模型本身推理吞吐的天花板。远程连接只是把终端文本传过来它无法加速本地模型的推理。5. 手机端实测避坑记录渲染、按键、断线、额度与休眠网络通了、会话保住了、模型配置没问题了手机端还有一堆体验细节。这些细节单个拎出来都是小事但凑在一起足以毁掉远程使用的欲望。5.1 终端渲染Claude Code 的界面在手机上变乱怎么办Claude Code 在终端里绘制了一套完整 UI有边框、状态栏、进度动画对终端类型和宽度很敏感。手机屏幕窄Termius 默认设置下经常出现表格错位、字符重叠、输出每行被拦腰截断。我的解决办法把终端类型明确设为 xterm-256color在 Termius 的终端设置里固定列数比如 120 列不要让它自动适应手机宽度关闭自动换行这样对齐的元素能保持结构完整。实在需要看长输出时把手机横过来或者用 tmux 的复制模式把内容复制出来看。5.2 没有键盘的尴尬Ctrl、ESC、Tab 和斜杠命令手机触屏上没有实体修饰键这是远程终端体验里最尖锐的矛盾。Claude Code 的交互大量依赖 Esc终止生成、CtrlC中断、斜杠命令。Termius 支持自定义工具栏按钮我把 Esc、Ctrl、Tab、/ 这几个高频键都加到工具栏上单手就能按到。还有一个小坑手机上中文输入法处于全角状态时按 / 斜杠可能输出成中文顿号或全角斜杠Claude Code 的命令就直接没反应。遇到敲命令没反应先检查输入法切回英文这比怀疑配置错误省时间。如果你用 iPad 接妙控键盘情况会好很多实体修饰键基本都能用体验接近笔记本电脑。5.3 断线重连手机网络切换与 SSH 半开连接SSH 有一个特点如果物理链路突然断了比如手机从 Wi-Fi 切到蜂窝双方可能不会立刻感知表现为终端卡死、没有任何响应。这是 TCP 半开连接问题。缓解办法在 SSH 客户端打开 Keep Alive定期发送心跳包如果还是经常断考虑使用支持 Mosh 的客户端Mosh 对 IP 变化和断线重连非常友好。但无论用什么客户端最关键的一道保险始终是 tmux。断线重连之后附加上去你会发现 Claude Code 还在原样运行甚至都不知道你刚才断过线。5.4 账号额度提示weekly Claude Code limit 50% higher 这类信息代表什么远程连上 Claude Code 或 Codex 之后经常会在界面上看到一条提示大意是“额度被临时提升本周 Claude Code 使用限额提高了 50%”。很多人误以为这是远程连接带来的额外福利其实不是。这个额度绑定的是你的账号本身与设备无关。你在手机上远程连接消耗的是同一个账号的同一份额度远程多台设备同时登录反而会让会话互相挤占、上下文混乱。所以别指望通过手机连接来绕过限额限制。合理做法是手机上执行任务时控制会话长度跑几步就检查一下进度长时间大上下文的任务尽量留在正经电脑上Claude Code 里可以用 /compact 压缩上下文、用 /clear 清理历史Codex 里通过 reset 开启新会话别让 token 在看不到的地方悄无声息地烧掉。5.5 承载机休眠才是最大的敌人我远程访问最常遇到的诡异情况不是网络问题而是承载机器睡着了。笔记本合盖自动睡眠桌面 PC 被电源策略挂起服务器被系统休眠——任何一种情况发生组网通道还在但 SSH 连接会立即失败tmux 里所有任务中断。解决思路是让承载机器保持常驻运行。macOS 上用 caffeinate 命令或电源设置里关掉“合盖睡眠”Windows 在电源计划里把“关闭盖子时”改成“不采取任何操作”Linux 服务器一般没有这个烦恼但如果是笔记本跑 Linux可以用 systemd-inhibit 防止挂起。承载机器如果放在家里最好接电源、插网线把 Wi-Fi 省电模式关掉杜绝一切可能导致睡眠唤醒失败的因素。我现在最常用的组合就是一台常年开机的 Linux 小主机装好 Node、Claude Code、Codex 和 tmux手机端用 Termius网络走私有组网方案。出门前把任务丢进 Claude Code 的 tmux 会话再切一个 Codex 会话跑另一条线到了手机上看输出、调参、改命令遇到真需要动手改文件的地方再回到电脑前用 code-server 补上。四套方案我都配过最后每天真正离不开的还是这套最稳的。远程连接这件事别一上来就追求把四个方案全部部署到位先按手头有的网络条件挑一条走通跑顺了再加安全加固、切换工具、本地模型这些花活稳定永远优先于功能。