news 2026/10/15 19:30:05

Android手机上部署Linux服务器 在Termux里安装Ubuntu

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Android手机上部署Linux服务器 在Termux里安装Ubuntu

说明

本教程说明了如何在Adroid手机上安装TermuxApp,并部署Ubuntu系统,说明了如何直接在Termux内安装ssh服务(推荐,后来补充的这种方法,避免和开机用手机输入大量命令行),以及在ubuntu内安装ssh服务,并提供了ubuntu内安装docker的基本步骤和ollama部署轻量大模型,用于学习参考,在实际操作中,doker功能的实现存在限制,参考为主。

安装Termux App

开源项目地址:https://github.com/termux/termux-app
下载地址,直接下载termux,不要下载成了f-droid:
https://f-droid.org/en/packages/com.termux/

安装Ubuntu

在 Termux 里安装 Ubuntu,标准且推荐的方法是通过proot-distro工具。整个过程不需要 Root 权限,跟着下面的步骤操作即可。

📋 准备工作

确保 Termux 是从F-Droid下载的(Google Play 版本已废弃),手机剩余存储空间建议在4GB 以上。

🚀 安装步骤

1. 更新 Termux 包列表

pkg update&&pkg upgrade-y

过程中如果提示配置文件冲突,直接按回车或输入N即可。

2. 安装 proot-distro

pkginstallproot-distro-y

3. 安装 Ubuntu

proot-distroinstallubuntu

这会下载 Ubuntu 24.04 LTS 的 rootfs 文件,大小约 200-400MB,耐心等待完成。

4. 登录 Ubuntu 环境

proot-distro login ubuntu

看到命令提示符变成root@localhost:~#就说明成功了。

5. 初始化 Ubuntu(在 Ubuntu 环境内执行)

aptupdate&&aptupgrade-yaptinstallsudonano-y

🔄 日常使用

以后每次打开 Termux 想进入 Ubuntu,只需执行:

proot-distro login ubuntu

如果希望打开 Termux 自动进入 Ubuntu,可以把这条命令追加到~/.bashrc文件中。

💡 小提示

proot 环境不支持 systemd,所以像systemctl这类命令用不了。需要后台运行服务时,可以直接用nohup或&来启动进程。

安装Open SSH服务(直接在Termux内安装,推荐):

该步骤完成后直接支持远程登录,省去了在手机上输入命令的麻烦

⚠️ Termux 的 sshd默认端口是 8022,不是标准22端口

1. 更新包并安装 openssh

pkg update&&pkg upgrade-ypkginstallopenssh-y

2. 设置登录密码(必须!)

passwd

输入两次密码,这就是远程SSH登录的密码。

3. 查看登录用户名

whoami

输出类似:u0_a147,这个就是ssh登录账号。

4. 查看手机局域网IP(电脑同WiFi连接)

ipa

找到wlan0下的inet,例如192.168.1.100。

5. 启动 sshd 服务

sshd

如果报错no hostkeys available,先生成主机密钥:

ssh-keygen-Asshd

停止ssh服务:

pkillsshd

6. 电脑端连接(Windows PowerShell / Linux / Mac)

sshu0_a147@192.168.1.100-p8022

替换用户名、IP,端口固定8022,输入刚才设置的密码即可登录。

7. 可选配置

开机自动启动 sshd(打开Termux就启动)

echo"sshd">>~/.bashrc

公钥免密登录(推荐,更安全)

电脑端生成密钥后,把公钥写入Termux:

mkdir-p~/.ssh# 将电脑id_rsa.pub内容追加到下面文件echo"你的公钥内容">>~/.ssh/authorized_keyschmod700~/.sshchmod600~/.ssh/authorized_keys

然后修改$PREFIX/etc/ssh/sshd_config,关闭密码登录:

PasswordAuthentication no

改完重启pkill sshd && sshd

常见坑

  1. 连不上:电脑和手机必须同一个局域网;手机省电策略会杀掉Termux后台,需要关闭电池优化、后台限制。
  2. 端口不能改22:Android不允许普通进程监听1024以下端口。
  3. 外网访问:局域网只能内网连接;外网需要端口映射/ngrok等内网穿透。
  4. 连接被拒绝:确认sshd已经运行ps aux | grep sshd。

安全提醒

  • 不要把密码登录暴露到公网;优先使用密钥认证。
  • Termux后台被杀是安卓机制,长时间运行建议把Termux加入后台白名单。

安装Open SSH服务(ubuntu内)

该步骤完成后,支持远程直接登陆ubuntu,前提是已经在手机终端的Termux里进入了ubuntu系统。
要让外部设备远程直接登录你 Termux 里的 Ubuntu,需要在 Ubuntu 内部单独装一个 SSH 服务,并换一个和 Termux 自带的 SSH 不冲突的端口。

🛠️ 操作步骤

在 Ubuntu 环境内(也就是你现在所在的root@localhost:~#提示符下)执行以下操作:

  1. 安装 OpenSSH 服务端

    aptupdate&&aptinstall-yopenssh-server
  2. 生成主机密钥(必须执行)

    ssh-keygen-A
  3. 设置 root 密码(用于远程登录)

    passwd

    输入并确认一个新密码。

  4. 修改 SSH 配置,换到新端口

    nano/etc/ssh/sshd_config

    找到Port那一行(如果被注释了就去掉#),把它改成2222(或者任何其他不冲突的端口,比如 10022)。不要用 8022,因为那是 Termux 自己用的。

  5. 启动 SSH 服务

    /usr/sbin/sshd

    注意:Ubuntu 里不能用service ssh start或systemctl,直接用这个绝对路径启动即可。

  6. 保持 Termux 会话不要关闭
    sshd是作为当前 proot 会话的子进程运行的,一旦你退出这个 Termux 会话,它就会被终止。

💻 从电脑连接测试

现在在你的电脑上(确保和手机在同一个 Wi-Fi 下),执行:

ssh-p2222root@手机IP

手机 IP 可以在 Termux(不是在 Ubuntu 里)用ifconfig或ip addr查看,通常是以192.168.开头的那一串。

如果连接被拒绝,先检查sshd是否在运行:在 Ubuntu 里执行ss -tln | grep 2222,看看端口有没有在监听。

到此,你可以远程登录手机上的ubuntu系统了

远程登录时,拒绝密码登录解决方案

这个错误在 Termux + Ubuntu 的环境里很常见,主要原因是Ubuntu 的 SSH 服务默认禁止 root 用户直接登录,或者密码认证方式没打开。

核心原因:Ubuntu 默认不允许 root 密码登录

你的 Termux Ubuntu 里,你用的账号是root。大多数 Linux 发行版的 SSH 服务出于安全考虑,默认不允许 root 用户通过密码远程登录。所以即使密码输对了,服务器也会直接拒绝。

解决方法:修改 SSH 配置

在手机上的 Ubuntu 环境里操作(也就是你现在root@localhost:~#的那个窗口):

1. 编辑 SSH 配置文件

nano/etc/ssh/sshd_config

2. 找到并修改以下两行
如果行首有#,去掉它。确保最终是这两个值:

PermitRootLogin yes PasswordAuthentication yes
  • PermitRootLogin yes:明确允许 root 用户登录。
  • PasswordAuthentication yes:确保允许用密码认证,而不是只认密钥。

3. 额外检查一项(Termux 环境特有)
在同一文件里找到UsePAM,把它改成no:

UsePAM no

因为 Termux 的 proot 容器里没有完整的 PAM 环境,开着它可能导致 sshd 启动失败或认证异常。

4. 保存退出
按Ctrl+O保存,回车确认,再按Ctrl+X退出。

5. 重启 SSH 服务
先杀掉旧的 sshd 进程,再重新启动:

pkillsshd /usr/sbin/sshd

注意:Ubuntu 里不能用systemctl restart sshd,那在 proot 环境里无效。

如果还是不行,检查这几点

  • 确认 Xshell 里填的端口:必须是你设置的2222(或你改的其他端口),不是默认的 22。
  • 确认密码已设置:在 Ubuntu 里执行passwd root重新设一次,输入时屏幕不显示字符是正常的。
  • 确认 IP 正确:在 Termux(不是 Ubuntu)里执行ifconfig,确认手机 Wi-Fi 的 IP 地址。
  • 确认 Termux 会话没关:sshd是依附在当前 Termux 会话上的,Termux 关掉服务就停了。

安装Docker

ubuntu里不能直接装Docker,需要在Termux里装
核心思路是:在 Termux 主机(而非 proot Ubuntu 内部)运行udockerd,让 proot Ubuntu 里的docker客户端通过网络连接到它。这样绕过了 proot 无法运行 Docker 守护进程的限制。

🧐 架构原理

udockerd是一个用 Python 写的 Docker Engine API 兼容守护进程,底层由udocker驱动,无需 root、namespaces 或 cgroups。它运行在Termux 主机上,监听一个 TCP 端口(默认 2375)。然后你的 proot Ubuntu 里的docker客户端,通过设置DOCKER_HOST=tcp://127.0.0.1:2375,就能和它通信。

📦 操作步骤

第一步:在 Termux 主机(不是 proot 内)安装 udockerd

打开 Termux(就是你平时打开的那个终端,不要用proot-distro login ubuntu进去),执行:

# 安装 Python 和必要依赖pkg update&&pkg upgrade pkginstallpython python-pipcurltar# 安装 udockerdpipinstalludockerd

udockerd 需要 Python 3.12+ 和 curl/tar。安装完成后,udockerd命令应该就可以用了。

第二步:启动 udockerd 守护进程

在 Termux 主机上,让它后台运行:

# 后台启动 udockerd,监听默认的 127.0.0.1:2375nohupudockerd>~/udockerd.log2>&1&

如果想让日志更详细便于排查,可以加-v:

nohupudockerd-v>~/udockerd.log2>&1&

udockerd首次运行时,udocker会自动下载它需要的 proot/fakechroot 执行后端,可能需要一点时间。

验证是否启动成功:

psaux|grepudockerd# 或者看端口是否在监听netstat-tlnp2>/dev/null|grep2375
第三步:进入 proot Ubuntu,配置 DOCKER_HOST

现在进入你的 Ubuntu 环境:

proot-distro login ubuntu

在里面设置环境变量,指向 Termux 主机上运行的 udockerd:

exportDOCKER_HOST=tcp://127.0.0.1:2375

为了让这个设置永久生效,可以写入~/.bashrc:

echo'export DOCKER_HOST=tcp://127.0.0.1:2375'>>~/.bashrcsource~/.bashrc

注意:127.0.0.1在这里是可行的,因为 proot 环境共享 Termux 主机的网络命名空间,localhost 是互通的。

第四步:测试 docker 命令
dockerps# 应该不再报 socket 错误,而是显示空列表dockerpull alpinedockerrun--rmalpineechohello

⚠️ 重要限制

使用 udockerd 时,有几个明确的边界需要知道:

docker build 仅支持经典构建器:如果你的 Docker CLI 默认使用 BuildKit,需要设置export DOCKER_BUILDKIT=0才能正常 build。

无进程隔离:udocker 的容器和 Termux 主机共享 PID namespace,不是真正的隔离环境,只适合单租户场景(也就是你自己用)。

无 docker compose:udockerd 不直接支持 docker compose,如果需要编排多个容器,只能手动用脚本管理。

仅限 Linux:udockerd 依赖 proot,只能在 Linux 内核上运行。

💡 后续建议

udockerd 启动后,终端关闭它可能会被终止。如果想让它长期稳定运行,可以考虑结合termux-wake-lock防止 Termux 被系统休眠,或者用nohup+ 后台方式确保进程存活。

如果你后续想跑一些实际的镜像(比如 Home Assistant、Jellyfin、Nextcloud 等),社区有现成的 Termux-Udocker 脚本可以参考,能省去手动配置端口映射和挂载的麻烦。

ubuntu内部署轻量大模型(学习):

在 Termux 的 Ubuntu 服务器中安装和运行轻量版大模型是完全可行的,目前最主流的方式是通过Ollama来部署。

🧠 怎么装:用 Ollama 跑轻量模型

  1. 环境准备:确保 Termux 中已通过proot-distro安装并登录了 Ubuntu。
  2. 安装 Ollama:在 Ubuntu 环境中执行一键安装命令:
    curl-fsSLhttps://ollama.com/install.sh|sh
  3. 启动服务:运行ollama serve或让它后台运行。
  4. 后台运行命令:
    nohupollama serve>ollama.log2>&1&# 查看进程是否启动psaux|grepollama
  5. 拉取并运行轻量模型:推荐从参数量最小的模型开始尝试,例如:
    ollama run qwen2.5:0.5b
    其他适合手机端的轻量选择还包括deepseek-r1:1.5b、llama3.2:1b、tinyllama:1.1b等。

📊 实际性能参考

在手机上运行大模型,性能主要取决于手机的芯片和内存。根据实测数据,不同设备的体验差异较大:

  • 旗舰机型 (如骁龙 8 Elite):运行Qwen 2.5 1.5B(Q4量化) 时,生成速度可达38.4 tokens/秒,体验比较流畅。
  • 中端机型 (如 Exynos 1380):运行Qwen 2.5 0.5B速度约21.5 tokens/秒,但运行1.5B模型时速度会降至8.7 tokens/秒。
  • 旧款旗舰 (如骁龙 865):运行Qwen 2.5 1.5B速度约13.8 tokens/秒。

⚠️ 需要注意的几点

  • 硬件门槛:运行大模型对手机内存(RAM)和存储空间有要求,建议预留充足空间。如果手机 RAM 较小,建议优先尝试0.5B 或 1.5B级别的模型。
  • 发热与耗电:推理过程会大量消耗算力,可能导致手机发热和电量消耗加快,建议在充电时或短时间使用。
  • 体验预期:虽然能跑,但速度通常无法与电脑相比。如果追求流畅体验,3B 左右的模型可能是部分中高端手机的舒适上限。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 19:29:43

[特殊字符] 笔灵 AI |Essay 英文降 AI 率,搞定 Turnitin AI 检测

精准适配 zerogpt、AI Detector、Copyleaks、turnitin、Originality 全平台检测规则,专注 Humanize AI、英文降AI率、免费在线查ai率英文、英文aigc检测,一站式解决海外Essay、Assignment、Report、PS文书AI痕迹超标问题,适配国内外中英文学术…

作者头像 李华
网站建设 2026/10/15 19:29:42

Windows SDK 7.1安装与命令行编译:老C++项目兼容性解决方案

简介:Microsoft Windows SDK 7.1是面向Windows 7及Server 2008 R2的官方开发工具集,适合C开发者构建、调试和部署原生Windows应用程序。该SDK涵盖最新Windows API、头文件与库,并集成Visual C编译器、链接器以及WinDbg等调试工具,…

作者头像 李华
网站建设 2026/10/15 19:29:33

SQL注入获取管理员账号密码的攻击链与防御实战

1. 从攻击链视角理解SQL注入的真实威胁1.1 为什么这个标题值得每一个开发者认真对待SQL注入获取网站后台管理员账号与密码,这个标题听起来像是渗透测试报告里的一个章节,但它背后折射出的问题远比字面意思严重得多。我在过去十多年里参与过不少安全评估项…

作者头像 李华
网站建设 2026/10/15 19:28:56

AI科研工具助力科研效率提升 解锁前沿学术研究新范式

外文文献“白嫖”与高效阅读全攻略 宝子们,是不是一提到下载外文文献就头大? 想找的文献要么全网搜不到,要么下载流程复杂到让人原地爆炸。好不容易在某个小网站找到了资源,又担心版权问题不敢点,更别说有些平台动辄几…

作者头像 李华
网站建设 2026/10/15 19:25:48

A2A 1.0协议:给多Agent系统画出协作边界

Agent会互相调用,这件事放在今天已经算不上新闻。翻翻开源社区,AutoGen、CrewAI、LangGraph哪个都能让几个Agent你一言我一语地跑完一个任务。但如果你真把一套多Agent系统放进生产环境,大概率会遇到比“调不通”麻烦得多的问题:A…

作者头像 李华
网站建设 2026/10/15 19:25:40

集成电路出口金额增长的原因有哪些

这两年做电子的应该都有感觉,集成电路的出口数据一路走高。海关数据显示,2024年我国集成电路出口额约1595亿美元,同比增长17.4%;2025年进一步突破2000亿美元,达到2019亿美元,同比增长26.8%,连续…

作者头像 李华