
1. 为什么要在手机上跑一个 SSH 服务端Termux 能在 Android 上跑一个相当完整的 Linux 用户态环境包管理用pkg底层就是 apt。它本身已经能装 Python、Node、gcc、git 这些常用工具但真正让手机变成「随身小服务器」的一步是把 OpenSSH 服务端跑起来——这样你在电脑上敲ssh -p 8022 用户手机IP就能直接进到手机的 Linux 环境里用大屏键盘写代码、传文件、跑脚本比在手机小屏幕上戳虚拟键盘舒服太多。这篇要解决的就是这条链路在 Termux 里装 OpenSSH、生成主机密钥、启动sshd、确认端口在听、从局域网电脑连上去最后把 Android 侧那些会让sshd悄悄消失的后台限制处理掉。适合手上有闲置安卓机、想拿它当轻量开发/测试节点的人也适合想随时从电脑连手机传文件、跑命令的人。需要提前说清楚一个前提Termux 的sshd默认监听8022端口不是 22。原因是 Android 上低于 1024 的端口属于特权端口普通应用绑不上。所以后面所有连接命令都带-p 8022别照着服务器教程写 22 然后连不上。另外本文只讨论同一局域网内的用法——手机和电脑连同一个 Wi-Fi或者手机开热点给电脑连。把sshd直接暴露到公网是另一回事风险高得多文末会提一句边界。2. 装 Termux 与 OpenSSH先把前置打牢2.1 Termux 从哪装Termux 的安装来源有讲究。官方 Wiki 明确建议从 F-Droid 获取构建Google Play 上那个是很久以前的旧分支更新节奏和当前版本对不上很多新包会装不上或行为异常。我自己的做法是从 GitHub 的 release 页面下 apk和 F-Droid 上的构建基本一致。要注意 apk 是按 CPU 架构分的下错架构装不上或者跑起来崩。现在绝大多数手机是 arm64高通骁龙、联发科天玑、麒麟的近代型号基本都是不确定的话在系统设置里查一下处理器信息或者直接搜「你的机型 CPU 架构」。选arm64-v8a那个包通常没错。装完打开 Termux第一件事是更新包索引避免后面pkg install拿到过期元数据pkg update pkg upgradepkg upgrade不是必须但新装的 Termux 建议跑一次把基础包对齐到当前仓库版本。2.2 安装 OpenSSHpkg install openssh这一个包同时带了客户端ssh和服务端sshd不用分开装。装完终端里可能会打印一段主机密钥的 randomart 图案并提示你可以装termux-services来做服务管理。这个提示先记着后面「可选自启」会用到但它和「手动敲sshd」并不冲突只是多一条自动拉起的路径。装完可以确认一下版本和文件位置pkg show openssh which sshdwhich sshd一般会输出/data/data/com.termux/files/usr/bin/sshd。记住这个前缀/data/data/com.termux/files/usr它就是 Termux 里的$PREFIX配置文件都在它下面。2.3 设置登录密码Termux 是单用户场景登录名就是你whoami看到的那个形如u0_a123这种。默认没有可用于 SSH 的密码必须自己设一个passwd按提示输入两遍强密码。这里要理解清楚这个密码只影响从网络侧用密码登录 SSH不等于给 Android 系统账户加锁也不会影响你手机解锁。设完可以用whoami记下用户名后面连接要用whoami3. 生成主机密钥并启动 sshd3.1 主机密钥第一次启动报错再补主机密钥是服务端向客户端证明「我是我」用的。有些 Termux 版本在pkg install openssh时已经帮你生成好了有些没有。判断方法很简单——直接启动看报不报错sshd如果出现no hostkeys available之类的错误说明密钥还没生成执行ssh-keygen -A-A的意思是「为所有默认密钥类型生成缺失的主机密钥」。生成完再跑一次sshd。密钥文件应该在$PREFIX/etc/ssh/下也就是/data/data/com.termux/files/usr/etc/ssh/里面会有ssh_host_rsa_key、ssh_host_ed25519_key这些。3.2 启动服务sshd没有输出通常就是成功了——sshd默认以守护进程方式在后台监听。想确认它在不在用pgreppgrep -l sshd应该能看到一行sshd进程。3.3 确认端口在听Termux 打包的sshd默认端口是 8022这个值来自 termux-packages 对sshd_config的补丁不是 OpenSSH 上游默认的 22。确认监听状态ss -nlt如果提示ss命令不存在按提示装一下一般在iproute2包里pkg install iproute2。输出里应该能看到类似LISTEN 0 128 *:8022 *:*也可以用nmap从本机探一下pkg install nmap nmap -p 8022 localhost看到8022/tcp open就说明服务端在正常工作。如果提示8022 已被占用多半是上一次的sshd还在跑。先清掉再开pkill sshd sshd要是pkill之后端口还被占就得查是不是别的程序占了 8022ss -nltp能看到占用进程Termux 里权限有限未必显示全。4. 从电脑连上去完整验证流程4.1 拿到手机 IP手机和电脑连同一个 Wi-Fi 时在 Termux 里看wlan0的地址ip addr show wlan0找inet后面那个192.168.x.x或10.x.x.x。如果手机是开热点给电脑连的网关地址通常是192.168.43.1这类以你机器实际输出为准别照抄。4.2 电脑端连接在电脑终端执行用户名换成你whoami的结果IP 换成上一步拿到的ssh -p 8022 u0_a123192.168.1.50第一次连会弹主机指纹确认输入yes写入known_hosts然后输入passwd设的密码。成功的话你会看到 Termux 的提示符比如~ $这时候你敲的每条命令都跑在手机的 Linux 环境里。想验证一下可以跑uname -a会看到aarch64 Android之类的信息。4.3 换成密钥登录推荐密码登录能用但每次输密码麻烦而且暴力破解面更大。更省事的做法是在电脑上生成密钥对把公钥塞进手机的authorized_keys电脑上如果还没有密钥ssh-keygen -t ed25519 -C pc-to-termux然后把公钥内容追加到手机的~/.ssh/authorized_keys。手机端先建目录和文件mkdir -p ~/.ssh touch ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys把电脑上~/.ssh/id_ed25519.pub的内容贴进authorized_keys一行一个公钥。之后电脑再连就不用输密码了。权限这块别偷懒——OpenSSH 对authorized_keys的权限很挑目录 700、文件 600 是常规约定权限太松会直接拒绝密钥登录。4.4 改 sshd_config按需想改端口、关掉密码登录只留密钥编辑nano $PREFIX/etc/ssh/sshd_config几个常改的项Port 8022 PasswordAuthentication no PubkeyAuthentication yes改完必须重启sshd才生效pkill sshd sshd注意改PasswordAuthentication no之前务必确认密钥登录已经能通否则会把自己锁在外面只能回 Termux 里手动改回来。5. 常见报错排查5.1 Connection refused电脑上连的时候报Connection refused说明 TCP 层就没通。按顺序查先在手机 Termux 里确认sshd在跑、端口在听pgrep -l sshd、ss -nlt。如果服务端没问题那就是网络层——手机和电脑是不是真在同一个网段有些路由器开了 AP 隔离同一 Wi-Fi 下设备互相不通这种情况换手机开热点给电脑连通常能绕过。再确认 IP 没写错手机重连 Wi-Fi 后 IP 可能变了。5.2 Permission denied (publickey,password)能连上但认证失败。先确认用户名对不对——必须是 Termux 里whoami的输出不是root也不是你电脑的用户名。密码登录的话确认passwd设过密码且sshd_config里PasswordAuthentication没被关掉。密钥登录的话检查authorized_keys权限700/600和公钥有没有贴错行。5.3 no hostkeys available前面提过ssh-keygen -A补生成主机密钥即可。这个报错在全新安装、或者清过$PREFIX/etc/ssh/之后最常见。5.4 sshd 说没就没这是 Android 特有的坑不是 OpenSSH 的问题。Termux 不是系统服务省电策略、后台清理、锁屏休眠都会让sshd进程消失或不再接受新连接。各厂商菜单名字不一样但在系统设置里搜应用名Termux大致要检查这几类电池与后台电池优化/省电策略选「无限制」或「允许后台高耗电」MIUI、ColorOS、HarmonyOS 等常有独立开关「允许后台运行」打开国产 ROM 里的「后台弹窗」「关联启动」也给 Termux 放行。多任务与通知从最近任务进入 Termux 卡片如果有锁形图标就锁上减少被一键清理划掉通知权限打开Termux 的常驻通知有时能帮系统识别「仍在使用」。网络与休眠Wi-Fi 高级设置里若有「休眠时始终保持网络」需要长时间 SSH 时打开否则锁屏后 Wi-Fi 节能可能导致间歇断连。进阶装Termux:API后可以用termux-wake-lock拿 Wake Lock减轻 CPU 休眠带来的异常开机自启用Termux:Boot插件在~/.termux/boot/下放脚本执行sshd但要配合上面的电池白名单才稳。5.5 可选用 termux-services 自动拉起不想每次手动敲sshd可以装服务管理pkg install termux-services sv-enable sshd之后进入 Termux 环境时更容易自动带上sshd。需要ssh-agent常驻的话再sv-enable ssh-agent。具体行为以你本机pkg install openssh结束时的提示为准不用 runit 的话只敲sshd也一样能连。6. 把 AI 工具的 Key 和通道也一起管起来手机上的 Linux 环境跑起来之后一个很自然的用法是把它当成随身开发节点——写脚本、调 API、跑 Agent 任务。这时候会碰到一个现实问题你手头可能有好几个 AI 工具的 Key散落在不同项目、不同机器的环境变量里换台设备就得重新配一遍通道地址也容易记混。我试过把这些统一收到一处管理用的是 TaoToken。它做的事情很直接把各家模型的 API 通道和 Key 集中在一个控制台里你在 Termux 里写脚本时只要指向统一的 API 地址、带上对应的 Key就不用每个工具单独记一套配置。具体到操作先在控制台把 Key 建好控制台入口https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewriteAPI Keys 管理https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewriteAPI 的基础地址是https://taotoken.net/api这个地址不加 UTM 参数直接用于代码里。在 Termux 里可以这样设环境变量让脚本统一读export TAOTOKEN_API_BASEhttps://taotoken.net/api export TAOTOKEN_API_KEY你的Key写进~/.bashrc或~/.zshrc就能持久化。之后不管是在 Termux 里跑 Python 脚本还是从电脑 SSH 进来继续干活读的都是同一套配置。如果你主要用 Claude Code 这类编码工具它有自己的接入方式文档在这里接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewriteClaude Code / Anthropic 相关https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecode-anthropicutm_campaignrewrite想先在网页上验证模型通不通用模型对话页最快模型对话https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite如果是长期跑编码任务、Agent 这类需要稳定额度和通道的场景可以看 Coding PlanCoding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite官网首页在这里需要看整体说明从这进官网https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content回到 Termux 这条线把 SSH 打通之后你在电脑上就能直接编辑手机里的脚本、跑 API 调用、看日志不用再在手机小屏上戳。配合统一的 Key 管理换设备、换项目时配置成本会低不少。最后提醒一句边界——这套sshd是给同一局域网内图方便用的别直接暴露到公网真要远程访问至少上密钥登录、改端口或者走一层更稳妥的通道。