Termux 上安装并启动 OpenSSH 服务端:局域网登录手机里的 Linux 环境
原创 · 约 14 分钟阅读 · 阅读 --

Termux 上安装并启动 OpenSSH 服务端:局域网登录手机里的 Linux 环境

作者: Alex Xiang


古董级程序员,大厂出来后一直在创业公司,现在仍活跃在一线做 AI 相关的开发。更完整的更新写在微信公众号「字与码」:工作经历、对新技术的想法,以及这些年走弯路的记录,会不定期发在那里。若觉得博客对你有用,欢迎顺手关注。

Termux 可以在 Android 上跑Linux终端,包括最小 Linux 用户态环境,包管理用 pkg / apt。我们安装 openssh 后可以直接在局域网里 ssh 登录手机,比在手机的小屏上操作方便得多。下面根据termux.dev 文档站的指向,以及 Termux 打包里 OpenSSH 的默认配置(监听 8022 端口,见 termux-packages 的 sshd_config 补丁)为准,并叠了我自己踩坑时常见的排错点。

安装 Termux

Wiki 主站说明写得很清楚:从 F-Droid 获取构建,不要从 Google Play 装(Play 上的旧分支以及更新节奏问题社区里争论很多,跟本文主题无关)。我是从github的release下载的apk包,应该是与F-Droid上下载的一样。要注意的是选对apk包,这个是分cpu架构的,不过手机的cpu大多都是arm64的,例如高通的骁龙系列,不确定的话可以网上搜一下。

安装 OpenSSH 并准备账号

在 Termux 里执行:

pkg update
pkg install openssh

装完后终端里可能会打出主机密钥的 randomart,并提示:若要用 ssh-agent,可安装 termux-services(基于 runit 的服务管理),再用 sv-enable 打开服务。这与「手动每次输入 sshd」不冲突,只是多一条自动拉起的路径。

Termux 中安装 openssh 后的提示:密钥指纹示意,以及 termux-services / sv-enable sshd 的说明

如果希望走服务管理,可以这样:

pkg install termux-services   # 简写 pkg i termux-services 亦可
sv-enable sshd                # 之后每次进入 Termux 环境时更易自动带上 sshd(依赖 termux-services 的工作方式)
# 可选:需要 ssh-agent 常驻时再执行
# sv-enable ssh-agent

具体以你本机 pkg install openssh 结束时的提示为准;若暂时不用 runit,只执行下面的 sshd 也一样能连。

openssh 这一包同时带 客户端 ssh服务端 sshd。Termux 是单用户场景,登录名一般是 whoami 看到的那个(形如 u0_a***),默认没有可用于 SSH 的密码,需要你自己设:

passwd

按提示设强密码;这只影响你从网络侧用密码登录,不等于给 Android 系统账户「加锁」。

主机密钥(第一次启动若报错再做)

若直接运行 sshd 时出现 no hostkeys available 一类错误,说明主机密钥还没生成,执行:

ssh-keygen -A

再启动 sshd。社区 issue 里也常把这步当作标准修复(主机密钥应在 $PREFIX/etc/ssh/ 下,Termux 里 PREFIX 通常是 /data/data/com.termux/files/usr)。

启动 SSH 服务

sshd

没有报错即表示守护进程已在后台监听。Termux 打包的 sshd 默认端口是 8022(不是 22,因为低端口在 Android 上往往是特权端口)。可用下面命令确认监听:

# ss命令如果没有,根据提示进行安装
ss -nlt
# 或
nmap -p 8022 localhost

若提示 8022 已被占用,可能是上次 sshd 还在,可先 pkill sshd 再开,或查清是否别的程序占了端口。

从电脑连接

在手机上看 IP:Wi‑Fi 下常用 ip addrwlan0 的地址,或热点模式下网关往往是 192.168.43.1 一类,以你机器实际输出为准。用户名请用 Termux 里 whoami 的输出(不要想当然用 Linux 服务器上的 root,除非你确认本机 sshd 配置确实允许且账户存在)。

在电脑终端执行(把 用户IP 换成你的):

ssh -p 8022 用户@IP

第一次连会提示主机指纹,输入 yes 写入 known_hosts,再输入 passwd 设的密码。下面是一张在 PC 上连到手机 Termux 的实机截图(命令里用户名以你手机为准;图里仅为当时局域网测试写法)。

PC 终端通过 ssh -p 8022 登录手机 Termux,出现 Welcome to Termux 横幅

更省事的做法是在电脑生成密钥对,把 公钥 写进 Termux 里的 ~/.ssh/authorized_keys(没有就建目录和文件),以后可关掉密码登录或减少暴力破解面。具体 authorized_keys 权限需符合 OpenSSH 要求(目录 700、文件 600 这类常规约定)。

高级配置可编辑 $PREFIX/etc/ssh/sshd_config,改端口、开关密码登录等;改完重启 sshd

Android 侧:权限与后台(不然 sshd 说没就没)

Termux 不是系统服务,省电策略、后台清理、锁屏休眠都会让 sshd 进程消失或不再接受新连接。各厂商菜单名字不一样,但大致要检查这几类(在系统「设置」里搜应用名 Termux):

电池与后台

  • 电池优化 / 省电策略:对 Termux 选 无限制不限制允许后台高耗电(MIUI、ColorOS、HarmonyOS 等常有独立开关)。
  • 后台活动 / 允许后台运行:打开;若有 「后台弹窗」「关联启动」(国产 ROM),给 Termux 放行,避免从 PC 唤醒场景下被链式拦截。

多任务与通知

  • 最近任务 进入 Termux 卡片,若有 锁形图标 或「锁定应用」,锁上,减少被一键清理划掉。
  • 通知权限 打开;Termux 常驻通知有时能帮系统识别「仍在使用」,别随手关掉「所有通知」。

网络与休眠(视机型)

  • Wi‑Fi 高级设置里若有 「休眠时始终保持网络」 / 锁屏不断网,需要长时间 SSH 时可打开,否则锁屏后 ARP 或 Wi‑Fi 节能可能导致间歇断连。
  • 若只有 移动数据,注意运营商 NAT 与热点策略;局域网调试优先 Wi‑Fi 或手机开热点给电脑连。

进阶(按需)

  • 安装 Termux:API 后可用 termux-wake-lockWake Lock,减轻 CPU 休眠带来的异常(仍挡不住被用户划掉进程)。
  • 开机自启:插件 Termux:BootWiki Addons)在 ~/.termux/boot/ 下放脚本执行 sshdsv-enable 相关逻辑;配合上面电池白名单才稳。

仍要接受一点现实:用户强行结束 Termux、重启手机、极端省电,都会让 SSH 断掉,需要重新进一次 Termux 或等 Boot 脚本跑起来。

使用上几个现实约束(小结)

  • 手动路径:每次需要远程时打开 Termux,执行 sshd(或已 sv-enable sshd 则依赖 termux-services)。
  • 自动路径termux-services + sv-enable sshd,或 Termux:Boot + 启动脚本,并配合本节 电池/后台白名单

安全提醒:把 sshd 暴露在公网或陌生 Wi‑Fi 前要三思,至少强密码或仅密钥、必要时改端口、配合防火墙或 VPN;手机上的 SSH 更多是「同一局域网内图方便」,不是默认当公网服务器用。

小结

步骤命令或要点
安装pkg updatepkg install openssh
密码passwd
主机密钥若报错再 ssh-keygen -A
启动sshd
连接ssh -p 8022 $(whoami)@手机IP(用户名以 Termux 内 whoami 为准)
可选自启pkg install termux-servicessv-enable sshd
后台稳一点电池无限制、允许后台、多任务锁定、必要时 wake-lock / Termux:Boot

更完整的生态说明仍以你能打开的 Termux Wiki 与正在迁移中的 termux.dev 文档为准;若某条命令在你当前 Termux 版本上行为变了,以 pkg show openssh 和官方仓库 issue 为准。