手机远程连接Claude Code和Codex:四套SSH方案详解与实战
先说一个我上个月的真实经历人在高铁上笔记本剩 15% 电后台一个 Claude Code 任务跑了一半手机弹出通知说代码生成完成。我掏出手机用 SSH 连回家里的电脑进 tmux 一看任务早就跑完了输出整整齐齐躺在会话里。那一刻我意识到手机远程连接 Claude Code 和 Codex 不是有没有必要的问题而是早该配好的问题。这篇文章我把目前主流且靠谱的四套方案一次性讲清楚局域网 SSH 直连、组网工具远程 SSH、Web 终端、中转服务器跳板。每套方案我都会说明适用场景、完整配置步骤、实测体感以及我踩过的坑。如果你经常需要在手机上临时操作电脑上的 AI 编程工具这篇文章能帮你少走很多弯路。1. 先想清楚一件事你远程连的是 AI还是一台电脑很多刚接触 Claude Code 和 Codex 的人有个错觉以为手机上装个 App 就能直接跑这两个工具。实际上Claude Code 是跑在终端里的命令行助手Codex 也一样它们依赖的是电脑上的文件系统、Node.js 运行时、shell 环境和 API 凭据。所以手机远程连接的本质是用手机去操作一台已经装好 Claude Code 或 Codex 的电脑而不是在手机里重新部署一套。只要这个认知到位后面所有选型就清晰了四套方案本质上都在解决同一个问题——怎么让手机稳定、安全、高效地控制那台电脑的终端。1.1 Claude Code 和 Codex 在终端里怎么跑Claude Code 是 Anthropic 的命令行 AI 编程工具你在一台装了 Node.js 的机器上敲claude就能进入交互式会话让它读取代码、修改文件、执行命令、跑测试。Codex 是 OpenAI 的同类产品安装后执行codex交互形态和能力边界略有差异但核心都一样在终端里工作。这两个工具运行时会大量读取工作目录、调用本机 shell、启动子进程所以对运行环境要求很高——必须有完整的文件系统权限必须能读写磁盘。这也决定了你没法用手机上的精简 App 去本地运行它们最稳妥的方式永远是远程连回那台有完整环境的机器。由此得到一个结论方案再怎么换都绕不开一个远程会话。会话越稳体验越好。1.2 手机远程的三条技术路径我把所有可行方案归纳成三种形态终端形态手机装 SSH 客户端连回电脑的 SSH 服务在终端里直接跑claude或codex。这是最接近原生体验的方式延迟最低输入靠手机键盘。网页形态电脑上起一个 Web 终端服务比如 ttyd或 Web 开发环境比如 code-server手机浏览器访问网页使用。优点是手机端零安装缺点是部分快捷键和交互会有损耗。中转形态借助组网工具或跳板机把本机的 SSH 服务安全地带到外部网络手机在任何环境下都能连。适合跨地域、跨运营商、严格防火墙等场景。这三条路径对应到下面四套方案我会逐个展开。1.3 动手前先回答的四个问题我个人不建议一上来就照着教程敲命令先花两分钟回答四个问题能帮你少走一半弯路。问题一你主要在什么网络环境下用如果电脑和手机经常在同一个 WiFi 下方案一就够用根本不用搞组网如果经常在外面连家里或办公室的电脑需要方案二或方案四。问题二你需不需要图形界面纯命令行操作跑 Claude Code、Codex、git、改文件用 SSH 就很舒服如果想在手机上远程看代码高亮、做可视化 diff甚至像在 VS Code 里一样操作方案三的 code-server 更合适。问题三你的输入设备是什么手机软键盘写长 prompt 很痛苦如果用折叠屏、平板或外接蓝牙键盘终端方案完全没问题如果只有一块小屏建议用网页方案配合语音输入或预设 prompt。问题四这台电脑是不是私人专属如果是公司电脑、多人共用或跑着重要业务安全等级必须拉满密钥登录、防火墙、绑定 IP 一个都不能少。如果只是家里一台闲置主机安全策略可以适当放松但底线不能破。2. 四套方案怎么选一张表看懂差别这里直接给我的结论。四套方案分别是A 局域网 SSH 直连、B 组网工具远程 SSH、C Web 终端、D 中转服务器/跳板。2.1 四套方案横向对比我列了一张表覆盖网络依赖、手机端要求、配置难度、延迟体感和适合人群方便你对号入座。维度A. 局域网 SSHB. 组网远程 SSHC. Web 终端D. 中转/跳板网络依赖同一局域网双方能上网即可同一局域网或配合组网需一台公网服务器手机端要求SSH 客户端SSH 客户端 组网 App任意浏览器SSH 客户端配置难度低中中高延迟体感极低中中高取决于线路质量断线风险低低中低配合 tmux适合谁在家/办公室经常出差想要图形界面长期稳定使用2.2 我的选型建议如果你只是周末在家电脑在书房、手机在客厅选方案 A五分钟搞定不需要任何额外服务。如果你经常出差、通勤或人在外面要连家里的电脑方案 B 是最均衡的选择。它不需要公网 IP也不需要额外买服务器组网后手机和电脑就像在同一个局域网里一样。我自己主力就是方案 B。如果你在手机上有大量代码阅读需求或者想用网页方式把终端分享给临时协作者方案 C 值得投入。code-server 能在浏览器里给你一个接近 VS Code 的界面Claude Code 和 Codex 都能在它的集成终端里跑。如果你已经有云服务器或者电脑藏在多层 NAT 后面、组网工具也不稳定方案 D 能兜底。它比方案 B 多一层保障配置成本也最高。2.3 组合拳思路这四套方案不是互斥的。我目前的日常是电脑上同时开着 SSH 服务和 ttyd家里用方案 A出门用方案 B临时想从别人手机上借个浏览器用方案 C。只要服务、密钥都配好四套入口其实可以并存切换时零成本。3. 方案一局域网 SSH 直连零成本起步方案 A 是理解后面所有方案的基础所以我讲得细一点把原理也说清楚。它在同一个 WiFi 环境下体验极佳是最容易跑通的入口。3.1 电脑端开启 SSH 服务先确认你的电脑系统。macOS 比较省事系统设置 - 通用 - 共享 - 打开远程登录SSH 服务就自动启用了默认端口 22。Windows 10/11 需要在可选功能里安装 OpenSSH 服务器然后在服务里启动 sshdLinux 发行版一般是sudo systemctl enable --now sshd或sudo systemctl enable --now ssh。开启之后先在电脑本机验证一下能不能连ssh localhost。如果本机能通说明服务正常问题只可能出在网络连接上。我遇到过很多次本机能通、手机连不上的情况排查顺序建议是确认手机和电脑连的是同一个路由器、同一个网段确认电脑防火墙放行了 22 端口Windows 尤其容易在这里卡住确认电脑的局域网 IP 没有频繁变化建议在路由器里给电脑做 MAC 地址绑定或直接设置静态 IP。3.2 手机端SSH 客户端怎么选手机端我用过几款简单说下感受Termius跨平台、界面现代、免费版够用支持密钥和 SFTP最适合新手我首推。Blink ShelliOS 上体验很好支持 Mosh 协议但收费。Termux安卓神器本质是个 Linux 环境能装 openssh 客户端可玩性高但要折腾。如果你用 Termius新建一个 Host填电脑的局域网 IP、用户名、端口密码登录也能用。但强烈建议按下面的方式配好密钥体验完全不一样。3.3 密钥登录配置强烈建议用密码登录有两个问题一是每次手输密码很烦手机键盘打复杂密码简直想死二是 SSH 服务暴露在局域网里如果网络环境不可信密码登录容易被暴力破解。密钥登录的思路是在电脑上生成一对公钥和私钥公钥放进电脑的授权列表私钥留在手机客户端登录时通过手机端保存的私钥完成身份验证。具体流程# 1. 在电脑上生成密钥对 ssh-keygen -t ed25519 -C phone-access # 2. 把公钥追加到授权列表 cat ~/.ssh/id_ed25519.pub ~/.ssh/authorized_keys # 3. 设置正确权限 chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys # 4. 验证 sshd 配置允许密钥登录后重启服务 sudo systemctl restart sshd # Linux # macOS 在系统设置里重启远程登录开关即可然后在 Termius 手机端填入电脑上生成的私钥内容用文本编辑器打开~/.ssh/id_ed25519复制粘贴进去或者在电脑上执行ssh-copy-id把公钥推给某个已有账号。注意私钥文件就是你的身份凭证建议在手机端给 Termius 开启应用锁或指纹解锁。密钥丢了等于把家门钥匙交给别人别大意。3.4 手机上跑 Claude Code 的实际体感连上 SSH 后进入你放项目的目录执行claude或codex就能正常交互了。局域网内 SSH 的延迟几乎可以忽略输入字符、看输出响应跟在电脑前差不多真正的瓶颈在手机键盘。软键盘上写多行 prompt 效率很低我常用的办法把常用 prompt 提前存成文件比如prompts/refactor.md手机上用claude prompts/refactor.md或claude $(cat prompts/refactor.md)直接让工具读取文件内容作为提示词把高频指令做成 shell alias比如alias startclaude 请基于当前目录启动项目并说明改动点需要长文本输入时先在手机备忘录里写好再粘贴进终端比在 SSH 界面里一个字一个字敲舒服得多。4. 方案二组网工具远程 SSH跨地域也像在局域网方案 A 最大的局限是必须在同一局域网。出差住酒店或者人在外面用 5G想连家里的电脑就得用方案 B。我推荐用 Tailscale 这类轻量级组网工具。4.1 为什么不用公网 IP 映射直连很多人第一反应是查一下家宽公网 IP在路由器上做个端口映射不就能从外面直连了吗理论上可以但实际有三个麻烦家宽公网 IP 经常变化很多地区运营商不给用户公网 IP而是 NAT 后的地址直接在公网暴露 22 端口会招来大量扫描和爆破安全压力极大。组网工具的思路是在手机和电脑之间建立一条加密的点对点通道让两台设备各自拥有一个虚拟局域网 IP即使两边都在不同网络后面也能像在局域网里一样互通。这样绕开了公网 IP、端口映射和大部分防火墙限制同时通道自带加密不暴露额外公网端口。强调一下组网工具解决的是你名下设备之间的安全互通请把用途限定在管理自己的设备上。4.2 安装与配置步骤电脑端到 Tailscale 官网下载对应系统安装包安装后运行登录流程拿到一个100.x.x.x网段的虚拟 IP确认 SSH 服务仍然开着确保防火墙允许虚拟网卡上的流量。手机端安装 Tailscale 手机 App登录同一个账号打开开关让虚拟网络连接成功在 Termius 等 SSH 客户端里把主机地址填为电脑在 Tailscale 里的虚拟 IP用户名和端口保持不变连接即可。整个过程大概十分钟。核心点是手机和电脑必须登录同一个 Tailscale 账号或同一个组网空间否则两边不在同一个虚拟网里肯定连不上。4.3 实测体验与延迟体感我在高铁上、地铁里、地下车库用手机连家里的电脑跑 Claude Code交互都比较流畅。体感比局域网本地连慢一截但绝对在可用范围内。如果用 5G 且家里宽带上传速度还行输出大段代码时没有明显卡顿。有一点必须提醒手机在弱网下 SSH 容易断线但这只断开终端会话不会杀掉 Claude Code 服务端进程。前提是你在终端会话里使用了 tmux 或 screen。这个习惯我在 6.3 会专门讲它直接决定远程体验的底线。4.4 踩坑组网后 SSH 连不上的排查链路最常遇到的坑是Tailscale 显示两台设备都在线也能 ping 通虚拟 IP但 SSH 就是连不上。我在自己设备上排查过一次完整链路如下。第一步查 sshd 监听范围。某些系统会把 sshd 的监听地址写死比如ListenAddress 192.168.1.x这会导致虚拟网卡上的流量被拒绝。解决办法是改为ListenAddress 0.0.0.0或同时监听多块网卡修改后重启 sshd。第二步查防火墙。Tailscale 的虚拟网卡在不同系统上名字不一样Linux 叫 tailscale0有些防火墙规则会默认拦截非物理网卡上的入站流量需要显式放行。第三步查路由。Windows 上偶尔会出现虚拟网卡路由冲突的奇怪问题执行tailscale ping 对端IP看输出能定位到是局域网段配置还是路由表的问题。把这三个地方逐一排除90% 的组网连接问题都能定位。这个排查链路对 ZeroTier 等其他组网工具也一样适用。5. 方案三Web 终端不装 App 也能用如果你不想在手机里装一堆客户端或者偶尔需要从公司公共电脑、平板、别人手机上临时操作方案 C 是最轻的体验。5.1 ttyd一条命令把终端搬进浏览器ttyd 能把终端会话直接跑在网页里。在电脑上装好 ttyd指定外壳和端口浏览器访问就能打开一个全功能终端。我常用的启动命令是ttyd -p 7681 -W -o tmux new -A -s work参数解释-p 7681指定端口-W允许在网页里写终端-o允许多个浏览器页面同时连接后面的tmux new -A -s work表示在浏览器打开时自动附加或创建一个叫 work 的 tmux 会话。这样即使浏览器意外关闭重新打开再访问Claude Code 的运行现场仍在。5.2 code-server在浏览器里获得接近 VS Code 的体验如果觉得网页终端太裸可以上 code-server——它把 VS Code 跑在服务器端手机浏览器访问后能得到一个完整的图形化 IDE。在它的集成终端里直接运行 Claude Code 和 Codex 毫无压力。code-server 安装用官方脚本。装完后我的建议配置文件里设置password字段拒绝匿名访问用 Caddy 或 Nginx 加一层 HTTPS否则你的代码、终端内容、API 密钥都会明文暴露在网络上这个风险不能接受如果只是自己用可以把端口绑定在组网工具的虚拟 IP 上只允许组网后的设备访问。5.3 手机浏览器里的实际表现我在 iPad 和手机上分别试过 code-serveriPad 上体验非常好分屏可以一边看代码一边看对话手机上界面偏小但竖屏状态下用移动端适配也凑合。ttyd 的网页在手机上就是一整块终端把字号调大一点配合蓝牙键盘效率尚可。需要提醒的是Web 终端的输入法兼容性不如原生 SSH 客户端某些输入法在网页终端里会出现候选词遮挡、回车不生效等问题。如果遇到优先换系统自带输入法或换个浏览器再试。6. 方案四中转服务器跳板长期稳定的兜底方案 D 我平时用得不算多但它在两种情况下非常值得启用一是在公司内网或校园网等严格防火墙环境组网工具调度不稳定二是你希望有一个固定入口任何设备、任何网络环境下都能以统一方式登录。6.1 中转的原理和适用场景中转的原理很朴素找一台有公网 IP 的云服务器作为桥让它和家里电脑建立连接手机先连到云服务器再由云服务器把流量转给家里电脑。这个方案的好处是源设备不需要公网 IP也不依赖组网工具的调度网络只要云服务器稳定整个链路就稳定。注意云服务器只负责转发流量计算、代码和 Claude Code/Codex 进程都还在本地电脑上不要把中转理解成云电脑。6.2 用 SSH 跳板实现少装一套服务很多人一说到中转就想到 frp、Nginx 转发之类但如果你已经有云服务器最简单的做法是利用 SSH 自带的跳板功能。手机端连接命令写成ssh -J user云服务器IP:端口 本地用户家庭电脑IP-J表示先连到云服务器再通过它跳进家庭电脑中间不需要在云服务器上装任何额外服务只要云服务器能访问到家庭电脑的 SSH 端口即可。如果再配合组网工具把家庭电脑 IP 换成虚拟 IP还能省去云服务器侧端口转发的配置。如果需求更复杂比如要让云服务器固定监听某个端口并转发到家庭电脑可以用 SSH 远程端口转发或 frp 一类的内网穿透工具。但我个人建议能用跳板解决就不要引入额外组件每多一个组件就多一类故障点。6.3 tmux 是手机远程的生命线这个必须放到最前面强调只要你打算用手机远程跑 Claude Code 或 Codex请把所有重要任务丢进 tmux。原因很简单——手机 SSH 会话极度不稳定锁屏、切 App、网络切换都可能断开连接。没有 tmux断线后终端里跑了一半的任务大概率会被杀掉上下文就没了。我的使用习惯是连上 SSH 后第一件事tmux new -s work如果之前有同名会话就tmux attach -t work恢复在 tmux 里启动 Claude Code 或 Codex手机断线了无所谓重新连上后tmux attach界面和运行结果原样恢复需要并行跑多个任务时开多个 window 切换。tmux 的默认前缀键是Ctrlb在手机软键盘上按这个组合很别扭。建议把它改成Ctrla或者在外接蓝牙键盘上做映射。改完之后在平板上操作舒服多了。7. 避坑专题手机远程连接的高频坑和排查链路这一节把我踩过的、以及社区里经常看到的坑集中说一遍。每个坑我都会给根因和排查思路而不是简单贴一行命令。7.1 cc-switch 报错配置写错地方了社区里有一个很典型的报错cc switch local proxy failed while handling codex endpoint /responses。如果你用 cc-switch 这类工具管理 Claude Code 和 Codex 的供应商配置这个报错通常不是 cc-switch 本身坏了而是它生成的配置里base URL 指向了一个本地转发地址而那个地址在你当前命令行环境下根本不可达。排查链路是这样的打开 Codex 的配置文件一般在~/.codex/config.toml看base_url字段指向哪里在命令行手动请求一下这个地址的/responses接口看通不通如果指向本地端口确认那个本地进程是否真的在运行修正配置后重启 Codex 会话再试。这个问题叠加手机远程后会更隐蔽你通过 SSH 进入命令行时环境变量、PATH、HOME 可能与桌面 GUI 里不完全一样cc-switch 启动时依赖的 GUI 环境和远程终端是两套会话自动写入的配置文件路径不一定通用。经验之谈远程环境下不要过度依赖 GUI 工具的自动配置它帮你写好的配置最终还是要回到命令行里验证一次。7.2 断线重连别让任务死在半路断线是手机远程最常见的痛。除了用 tmux 兜底我还有几个实操技巧在 SSH 客户端里开启 TCP keepaliveTermius 的 Host 设置里可以调整 keepalive 间隔让手机和服务器之间维持心跳减少假死避免锁屏后长时间不操作iOS 和 Android 都可能把后台网络挂起建议在终端会话中临时关闭自动锁屏或者把终端 App 加入后台不清理的白名单如果信号长期不稳定可以试试 Mosh 协议Blink Shell 等客户端支持它对 IP 变化和延迟容忍度高很多代价是服务器端需要额外安装 mosh 服务。7.3 手机键盘和输入被低估的体验杀手手机远程的连接问题解决了输入又来了。手机软键盘上的 Tab、Esc、方向键要么没有要么需要切换符号层这对终端交互是灾难级的。我的解决方案分三层尽量让 Claude Code / Codex 去读文件而不是直接在交互框写长需求把复杂需求写成 markdown 文件放到仓库里然后通过重定向或参数传入手机上装支持外接键盘的终端客户端比如 Termius 支持蓝牙键盘把常用按键设置成快捷键长文本输入先用语音转文字再粘贴进终端效率比软键盘高很多。7.4 Token 消耗远程时烧得比想象中快手机远程跑 Claude Code只要你开着会话随手翻文件、反复让模型改代码token 消耗会非常快。尤其是远程挂着看日志、读大文件一个不留神就把上下文窗口占满既慢又贵。结合我的经验几个省 token 的做法适时用/compact压缩历史对话把早期无关上下文清掉不把整个仓库塞进上下文只让 Claude Code 读当前要改的文件或目录启动时用--max-turns限制单次任务步数防止它在无人监督时无限执行把任务拆小每次只做一件事做完验证后再开新会话而不是把会话挂一整天。另外如果你的账号触发过类似 your limits are temporarily boosted. your weekly claude code limit is 50% 的提示说明配额已经不宽松了。远程场景下你会更频繁遇到因为长时间霸占会话会让额度消耗更快。把大任务分批执行错峰处理体验会舒服很多。7.5 安全底线别把自己的电脑裸奔在公网上最后必须是安全。无论选哪套方案守住这几条底线绝不要直接把 22 端口无条件映射到公网除非你非常清楚自己在做什么且有防火墙配合密钥登录永远优于密码登录更远优于空密码使用非默认端口可以挡掉一部分扫描但这不是安全手段只是降低背景噪声尽量配合组网工具或跳板机让 SSH 端口不直接暴露到公网重要电脑上开启登录失败告警或日志审计。我见过一个真实案例有人图省事把家里电脑的 22 端口直接暴露到公网结果一周内被扫描爆破上千次虽然密码够复杂没被攻破但日志里那些尝试记录看得人心惊。手机远程这件事图的是方便不是给别人留门。7.6 电脑休眠和电源策略远程连不上的隐藏原因还有一个很容易被忽略的坑电脑休眠了SSH 服务直接下线你怎么连都白搭。手机远程之前务必检查电源策略Windows 在电源和睡眠里把插入电源时进入睡眠改为从不macOS 在电池设置里打开防止 Mac 在显示器关闭时自动进入睡眠或使用 caffeinate 命令Linux 桌面环境同样需要关闭自动挂起服务器版一般默认无此问题。如果你不想改全局电源策略可以只在需要远程时用 SSH 发一条唤醒命令或者配合智能插座做远程通电。我个人是在 BIOS 里把网络唤醒打开遇到意外关机还可以远程开机。这些都是血泪教训换来的清单。写在最后我的手机远程连接日常现在我的默认配置是电脑上同时开着 SSH 服务和 tmuxTailscale 常驻后台ttyd 绑定在组网虚拟 IP 上。出门用手机 Termius 连 Tailscale 虚拟 IP进 tmux 恢复会话跑 Claude Code 或 Codex断线了重新 attach任务从来不丢。偶尔在别人电脑上临时用就打开浏览器走 ttyd 那条路。如果你之前总觉得手机远程连接很麻烦我建议从方案 A 开始先跑通局域网再逐步叠加组网和 tmux。你会发现真正提升体验的不是某个酷炫工具而是一个断线不断任务的可靠底座。配置好之后手机就不再只是刷资讯的屏幕而是你随手可用的远程开发入口。这个方向还可以继续扩展把本机的 Claude Code 环境容器化让手机通过快捷指令一键唤起某个常用任务甚至搭配自动化脚本在固定时间执行代码 review。这些内容以后有机会再单独分享。