ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

手机远程连接Claude Code与Codex:SSH、tmux及四套方案实战

手机远程连接Claude Code与Codex:SSH、tmux及四套方案实战 1. 先说结论手机远程跑 Claude Code / Codex本质是什么要准备哪些前提最近 Claude Code 和 Codex 这两个终端 AI 编程工具热度很高大家搜得最多的除了安装教程就是远程连接。很多人把“手机远程连接”想复杂了以为要在手机上装一个能跑模型的 App。真实的情况远没那么玄乎Claude Code 和 Codex 本质都是命令行工具它们跑在哪个机器上哪台机器才是真正的“干活主力”。手机要做的事情只有一件就是通过远程通道连到那台机器把终端界面显示出来把你输入的命令传过去。所以手机远程连接的真正含义是“手机上的终端只是遥控器真正执行命令的是服务器”。顺着这个逻辑往下想整个方案的骨架就很清晰了你需要一台随时能访问的远程机器一台能装终端 App 或者浏览器的手机以及一条安全的连接通道。远程机器可以是云服务器、家里一台长期开机的电脑也可以是公司给你的开发机。连接通道最常见的就是 SSH。只要你把 Claude Code 或 Codex 装在那台远程机器上手机连过去之后就能像坐在电脑前一样直接敲claude或codex指令。在铺开四套方案之前我建议你先花一分钟确认三件事。第一远程机器能不能通过网络访问。有公网 IP 最省事没有的话局域网或者内网条件下的连接方式会不太一样需要提前想清楚。第二手机端的操作方式你是否能接受。手机屏幕小、虚拟键盘没有物理键盘舒服所以我会在后面重点讲怎么用 tmux 这类工具减少反复输入。第三服务能不能持续跑。如果手机一锁屏、App 一退命令就断了这种体验基本没法用。解决方案不是让手机保持亮屏而是让命令跑在服务器端的常驻会话里。把这三件事想清楚后面四套方案的选择就简单多了它们最后拼的不是谁更炫而是谁更匹配你的网络条件和使用习惯。2. 四套方案怎么选原生 SSH、网页终端、Web 版 VS Code、云端开发环境各自适合谁网上聊手机远程连接方案其实绕不开四条路。第一套是原生 SSH 客户端代表工具是 Termius、Blink Shell、Termux手机通过 SSH 协议直连服务器。第二套是网页终端用 ttyd 或 gotty 这类工具把服务器上的终端转换成网页手机浏览器打开一个网址就能操作。第三套是 Web 版 VS Code也就是 code-server它在服务器上跑一个 VS Code 网页版手机浏览器里不仅有终端还有文件树、编辑器、插件。第四套是 GitHub Codespaces 这类云开发环境直接创建云端容器在里面装 Claude Code 和 Codex手机浏览器无需配置就能进入。这四套方案并不是谁替代谁的关系它们解决的痛点完全不同。原生 SSH 客户端最轻量流量消耗最小响应速度最快适合绝大多数只想跑命令行 AI 工具的人。它的短板是纯文本界面如果你还想看代码文件、做 diff 审查会有点吃力。网页终端 ttyd 的优点是你不需要任何 App手机浏览器打开就能用适合临时用别人的电脑或者 iPad 应急缺点是很依赖 Web 端的安全性配置裸奔暴露在公网的风险很大这点我在第四章会特别提醒。code-server 的定位是“把电脑搬进浏览器”它的沉浸感最强适合既要写代码又要跑 Claude Code / Codex 的场景。缺点是部署步骤最多对服务器的内存和带宽有一定要求手机浏览器打开之后的性能也不如桌面浏览器。Codespaces 则是最省心的一条路服务器不用你管环境即开即用但它依赖 GitHub 账号、网络条件和订阅额度适合非常看重“免运维”的人。为了让你更快定位自己的情况我把决策因素整理成了下面的表格。方案核心依赖操作门槛适合场景最明显的坑原生 SSH 客户端服务器、SSH 配置低只想跑 CLI、追求稳定省流手机键盘缺 Ctrl/Esc命令输入别扭ttyd 网页终端服务器、Web 端口低临时应急、无 App 环境明文 HTTP 暴露安全问题突出code-server服务器、Node.js 环境中高既要编码又要跑 AI CLI部署链长老手机浏览器卡顿GitHub CodespacesGitHub 账号、网络低不想管理服务器额度有限长时间使用要花钱我的建议非常直接如果你追求的是“手机远程跑起 Claude Code 和 Codex”这件事本身从原生 SSH 客户端进门最合适如果你经常出差、手边只有 iPadttyd 会是不错的后备如果你是开发者想在手机上改代码并且顺手调 AIcode-server 值得折腾如果你完全不想看见“安装”两个字Codespaces 是你最后的保底选项。接下来的实操章节我会按这个优先级把每套方案的关键步骤拆开讲。3. 首选路线实战一台服务器 手机 SSH 客户端完整跑通 Claude Code 和 Codex我自己的主力方案就是原生 SSH 客户端这个选择不是因为它最酷而是因为它在所有方案里链路最短、故障点最少。下面这套流程我最近完整跑过一遍照着做基本不会翻车。3.1 服务器环境准备Node.js 版本和基础依赖Claude Code 和 Codex CLI 都是基于 Node.js 的所以第一件事是把 Node.js 装好。我建议直接用 NodeSource 的源装 LTS 版本不要用某些系统自带的老旧 node版本太老会导致 npm 包安装失败。curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt-get install -y nodejs git node -v npm -vNode 装完之后顺手把 git 也装上。虽然 Claude Code 不强制依赖 git但 Codex 在很多场景下要读仓库信息缺了 git 会出现一些莫名其妙的报错。装完记得看一眼版本号Node 至少保证在 18 以上。3.2 在服务器上安装 Claude Code 和 Codex安装命令很简单真正容易出错的地方是环境的干净程度。我建议在服务器上建一个专门跑 AI 工具的用户不要用 root 直接跑避免权限过大把配置文件搞乱。sudo adduser dev sudo usermod -aG sudo dev su - dev npm install -g anthropic-ai/claude-code npm install -g openai/codex装完验证一下claude --version codex --version如果 npm 全局安装报权限错误通常是 node 安装方式的问题千万不要顺手加sudo npm。正确做法是把 npm 的全局目录放到用户目录下配置npm config set prefix ~/.npm-global然后把路径加进~/.bashrc。这一步能省掉后面很多权限相关的麻烦。3.3 手机 SSH 连接与登录授权headless 服务器上最常见的拦路虎服务器装好之后先在电脑上用 SSH 登录一遍确认能正常访问再折腾手机。ssh-keygen -t ed25519 -C devphone ssh-copy-id dev服务器IP ssh dev服务器IP用密钥登录替代密码登录这不是可选项而是必需品。手机上装一个 Termius 或者 Blink Shell新建 Host填上服务器 IP、用户名导入私钥就能连上了。Android 可以用 Termux不过 Termux 的界面配置会稍微多一步。连上之后真正的大坑来了服务器是没有浏览器的 headless 环境claude login和codex login这种需要交互式浏览器授权的流程第一次跑的时候极容易卡住。先说 Claude Code执行claude login之后CLI 会打印出一条授权 URL让你在浏览器里打开。这条 URL 你可以在任何设备的浏览器里打开包括手机浏览器授权完成后服务器端会自动登录成功。如果你手上有 Anthropic API Key更省事的做法是直接设置环境变量export ANTHROPIC_API_KEYsk-ant-你的key claudeCodex 也是类似的逻辑。运行codex login会生成一个设备授权码终端里会显示类似codex login --code xxxx的提示你需要在浏览器里登录 OpenAI 账号把授权码粘进去。这里很多人第一次会卡在“总觉得授权码过期了反复重跑登录命令”实际上你只要保持 CLI 一直开着授权码是够用的。登录完成之后强烈建议把 API Key 的配置固化下来。创建一个环境变量文件比如~/.env.remote写入两个 Key然后在~/.bashrc里 source 它。这样每次 SSH 登录之后直接运行claude或codex就能进入工作状态不需要每次重新粘贴 Key。3.4 用 tmux 常驻会话让命令不随手机锁屏而中断手机远程连接最大的体感问题就是网络稍有波动SSH 就会断开。SSH 一断开正在跑的 Claude Code 对话就没了这不能怪手机也不能怪 Claude Code而是终端会话本身的生命周期绑定了连接。解决思路是把命令跑在 tmux 里。tmux 是运行在服务器上的会话管理工具它和 SSH 连接是解耦的——SSH 断了tmux 里的进程照跑不误。手机重新连上之后你只需要再把 tmux 会话接回来。tmux new -s ai claude需要离开的时候按Ctrl b再按d会话就会转入后台。手机锁屏、App 退出都无所谓。下次连接服务器后执行tmux attach -t ai就能回到之前的对话现场上下文一条都不丢。这个技巧我认为是整个远程方案里最值钱的一个没有之一。没有 tmux前面所有连接工作都是在沙地上盖房子。4. 网页终端与 Web 版 VS Code不装 App 的远程方案该注意哪些配置原生 SSH 方案并不适合所有人。有些人临时在外面不方便装 App有些人的主力设备是 iPad外接键盘的适配总差一点。这时候ttyd 和 code-server 这两套基于浏览器的方案就派上用场了。4.1 ttyd 网页终端一条命令把终端搬进浏览器ttyd 可以把任何一个终端程序转发到 Web 端口手机浏览器打开后就是一个可交互的命令行界面。安装不复杂比较常见的做法是直接下载官方编译好的二进制。sudo apt install -y ttyd ttyd -p 7681 -o tmux new -A -s web bash这个命令的意思是让 ttyd 监听 7681 端口并且每次连接都自动进入一个名为 web 的 tmux 会话。加了 tmux 之后浏览器刷新、断网都不会丢失正在运行的 Claude Code 会话体验和原生 SSH 就靠拢了。但这里有一个无法回避的安全隐患ttyd 默认跑的是明文 HTTP如果直接把 7681 端口暴露到公网就相当于把服务器终端挂在大街上。我见过不少人为了省事这么干结果服务器被扫描爆破进程被植入挖矿程序。正确的做法是让 ttyd 只监听本机地址手机端通过 SSH 隧道来访问。ttyd -p 127.0.0.1:7681 -o tmux new -A -s web bash手机 Termius 里配置一条端口转发规则把本地的 7681 端口转发到服务器的 7681 端口。隧道建立后手机浏览器直接访问http://127.0.0.1:7681就行。注意这里访问的是手机自己的 127.0.0.1不是服务器的 IP因为隧道出口就在手机本地。这一步很多人会绕晕弄反了就会显示连接被拒绝。4.2 code-server在浏览器里获得一套完整 VS Code连终端一起打包如果你对终端的诉求不止于敲命令还想浏览代码、搜索文件、看 diff那就上 code-server。它的本质是在服务器上跑一个 VS Code 网页版浏览器打开就是编辑器界面内置终端也能直接执行claude或codex。curl -fsSL https://code-server.dev/install.sh | sh code-server --bind-addr 127.0.0.1:8080默认密码写在~/.config/code-server/config.yaml里第一次启动后务必看一下。cat ~/.config/code-server/config.yaml同样建议只绑定 127.0.0.1然后手机通过 SSH 隧道访问方式跟 ttyd 一样只是把 7681 换成 8080。code-server 对手机浏览器的兼容性总体不错但如果你用老款手机或者性能一般的 Android 平板页面加载会比较吃力。一个优化小技巧是在服务器端把 code-server 的插件数量减到最少关掉各种重量级语法扩展因为这些扩展会在浏览器端消耗大量内存。使用 code-server 时终端的字号和键盘适配也是体验关键。我习惯在设置里把terminal.integrated.fontSize调到 16 或 18虚拟键盘上 Ctrl 键缺失的问题可以给 code-server 配置自定义快捷键把常用命令做成命令面板里的快捷项实际操作起来比一根根戳键盘快得多。4.3 避坑关闭显示器后分辨率降低的问题在 CLI 场景其实不存在热搜里有个词条叫“关闭显示器后远程连接分辨率降低”这通常是远程桌面类工具尤其是 Windows RDP的问题。如果你用 ttyd 或 code-server终端界面和显示器分辨率没有关系因为渲染发生在手机浏览器这边你关闭服务器显示器、拔掉 HDMI都不会影响终端布局。这就是我坚持推荐 CLI 工具而非远程桌面的原因之一——在远程桌面上跑 Claude Code不仅画质差、延迟高还有分辨率缩放的乱七八糟问题。当然如果你确实需要远程桌面来运行 GUI 环境再单独折腾分辨率策略也不迟但就“手机远程跑 Claude Code 和 Codex”这个需求本身浏览器终端就够用了。5. 不管理服务器也能远程GitHub Codespaces 的配置思路前三套方案都默认你手上有一台服务器。但有些读者可能连服务器都没有也不想买那第四个方案就值得看了GitHub Codespaces。它本质上是在 GitHub 的云端跑一个开发容器你不用操心机器配置、SSH 密钥这些东西只要用浏览器打开 Codespaces 的页面就是一个完整的 VS Code Web 界面。进入 Codespaces 之后最方便的路是在项目仓库里放一个.devcontainer/devcontainer.json把 Claude Code 和 Codex 的安装命令固化进去。这样每次创建新的 Codespace环境都是自动配好的。{ name: mobile-ai-cli, image: mcr.microsoft.com/devcontainers/universal:2, postCreateCommand: npm install -g anthropic-ai/claude-code openai/codex }推到 GitHub 仓库后新建 Codespace容器起来的同时两个工具就装好了。在终端里运行claude或codex走一遍登录流程就能用。Codespaces 的优势是零服务器运维成本断网重连后环境还在。但它的劣势也很直接免费额度有限超过之后按小时计费网络依赖比较明显国内访问有时不太稳定手机浏览器上体验比 code-server 稍差因为页面组件更重。我的看法是如果你已经重度使用 GitHubCodespaces 是一个不错的备用方案如果你长期在非 GitHub 的代码平台上工作那它作为主力的意义就不大。6. 真机实测后的避坑清单从键盘映射到授权再到各种奇怪报错写到这里我想把实操过程中真正踩过的坑集中列出来这些坑不是配置手册里会写的但每一个都真实地浪费过我的时间。6.1 手机键盘没有 Ctrl 和 Esc多行命令和交互式操作怎么办手机终端的虚拟键盘默认没有 Ctrl 键而 Claude Code 和 Codex 的很多交互都依赖 CtrlC、CtrlV、方向键。第一次在床上拿手机跑codex的时候我花了五分钟都没把多行输入粘进终端。解决办法是Termius 左上角有一个额外的键盘工具栏可以打开快捷键面板。Blink Shell 则支持自定义外接键盘映射。实际操作中我养成了一个习惯——尽量把需要重复输入的内容写进一个脚本文件然后在终端里直接运行这个脚本避免在手机键盘上反复敲长命令。6.2 headless 服务器上的登录授权学会分辨两种路径这一点前面提过但我建议你再重视一次新服务器第一次跑claude login时如果提示“无法打开浏览器”不代表失败它只是找不到本地浏览器CLI 已经把授权链接打印出来了。在手机浏览器里打开链接完成授权服务器端会自动同步登录状态你只需要回到终端等一下。如果是 Codex留意终端里的设备授权码在网页输入授权码即可。不要看到英文报错就手忙脚乱去重装 CLI这个动作我干过浪费了半小时。6.3 临时会话的命根子tmux 不止保活还避免切换网络时的尴尬我建议你给自己立一个规定只要是通过手机远程跑 Claude Code 或 Codex一律先开一个 tmux 会话再启动工具。这不是锦上添花而是基本纪律。手机端经常出现的问题不是命令本身出错而是你从 Wi-Fi 切到流量SSH 网络断了进程跟着没了。tmux 能让进程留在服务器端网络恢复后你重新 attach 就能无缝续上。同时它还能防止另一个尴尬场景——开会时锁屏再打开手机里的终端内容已经被系统杀掉。6.4 关于“cc switch local proxy failed while handling codex endpoint /responses”这类报错搜索词里很多人遇到 cc switch local proxy failed while handling codex endpoint /responses 这个问题。CC Switch 是一个用于管理和切换 Claude Code、Codex 等工具提供商配置的开源工具不少人在远程环境下用它把请求转发到本地代理比如 Ollama 或 DeepSeek。这类报错我实测下来的根因主要在两点一是上一次代理进程没有退干净端口被占用新的请求发到了旧进程上二是切换提供商后认证头或 Base URL 没有同步刷新。解决方式不是反复改配置文件而是先把 CC Switch 的代理进程彻底停掉检查ps aux | grep cc-switch里是否有残留的 node 进程全部清理后再重启。如果你只是想把 Codex 接到 DeepSeek 或其他模型服务确认好对方提供的 API Base URL 和 Key再填进 CC Switch不要让它走本地代理模式能减少一类报错。6.5 连接稳定性之外还要留意的系统级小坑字符集和时区是一个很容易被忽略的细节。服务器终端默认的 Locale 如果不是 UTF-8Claude Code 的输出可能会出现乱码尤其是中文内容。建议在~/.bashrc里显式加上export LANGen_US.UTF-8或者zh_CN.UTF-8装好系统的 locales 包再重启 SSH。时区最好也调成和本地一致否则日志里的时间戳怎么看怎么别扭。这些和 Claude Code 本身没有关系但一旦出问题排查路径比功能问题更绕。6.6 远程 Key 的安全管理我推荐的最小可用方案手机上操作环境变量是一件比较别扭的事情尤其是 API Key 这种敏感信息。我的做法是在服务器上新建一个.secrets文件写入 API Key权限设为 600然后在~/.bashrc里 source 它。这样 SSH 登录后 Key 自动加载而且对服务器上的其他用户不可见。要换 Key 的时候直接改一个文件就够了不用去翻几十条历史命令。touch ~/.secrets chmod 600 ~/.secrets echo export ANTHROPIC_API_KEYsk-ant-xxx ~/.secrets echo export OPENAI_API_KEYsk-xxx ~/.secrets echo source ~/.secrets ~/.bashrc四个方案的对比做完我个人的最终建议还是那句话远程跑 Claude Code 和 Codex先用原生 SSH 客户端 tmux 打通最小闭环等你觉得纯终端不够用再按需求往 ttyd、code-server 或 Codespaces 上扩展。手机远程连接这件事入门门槛其实很低真正决定体验的从来不是工具多炫而是你愿不愿意花 10 分钟把服务器端的会话管理、密钥配置和网络安全做扎实。
返回列表