【超详细】手机搭建服务器 · 第 五 期

本期主题:解决termux安装ubuntu的各种问题 前四期回顾: 【超详细】手机搭建服务器 · 第 一 期 【超详细】手机搭建服务器 · 第 二 期 【超详细】手机搭建服务器 · 第 三 期 【超详细】手机搭建服务器 · 第 四 期 [!note] 前几期完成了什么 第一期主要说的是必备条件; 第...
【超详细】手机搭建服务器 · 第 五 期
【超详细手机搭建服务器 · 第 五 期

本期主题:解决termux安装ubuntu的各种问题

前四期回顾:

【超详细】手机搭建服务器 · 第 一 期
【超详细】手机搭建服务器 · 第 二 期
【超详细】手机搭建服务器 · 第 三 期
【超详细】手机搭建服务器 · 第 四 期

[!note] 前几期完成了什么
第一期主要说的是必备条件;
第二期讲了如何解决手机供电问题;
第三期讲了如何让wifi用不断连(不过代码在第四期做了重大更新);
第四期实现了如何让ipv6一直处于可用状态和如何自动更新DDNS

这一期主要讲termux如何安装ubuntu。 原本类似的教程网络上很多,感觉没有出的必要。但是在安装的过程中,遇到了很诡异的问题,然后困扰了我很久,而且网上相关的解决方案基本没有,好不容易终于找到了一个解决方案,所以想着记录下来。

一、先准备 Termux 环境

1. 客户端选择: 大家可以安装termuxtermux,也可以安装ZeroTermux。我自己安装的是ZerTermux。
2.更新环境,并且安装常用工具包

pkg update -y
pkg upgrade -y
pkg install -y curl wget unzip nano coreutils openssl openssl-tool termux-api

3.刷入 BusyBox模块
官方仓库:GitHub - Magisk-Modules-Repo/busybox-ndk: busybox-ndk · GitHub
下载链接:Download Busybox for Android NDK-1.36.1-13614.zip (Magisk)

4.刷入chroot-distro 模块
chroot-distro.zip (18.4 KB)

两个模块都刷入以后,记得重启手机

5.给 Termux 创建快捷的chroot-distro 命令:
在 Termux 执行:

cat > $PREFIX/bin/chroot-distro <<'EOF'
#!/data/data/com.termux/files/usr/bin/bash

args=""
for arg in "$@"; do
    escaped_arg=$(printf '%s' "$arg" | sed "s/'/'\\\\''/g")
    args="$args '$escaped_arg'"
done

su -c "/system/bin/chroot-distro $args"
EOF

chmod +x $PREFIX/bin/chroot-distro

然后测试:

chroot-distro list

如果正常,说明快捷命令创建成功。

6.下载ubuntu:

chroot-distro download ubuntu

看自己要安装什么版本,输入对应的数字回车即可,我选的是ubuntu 24.04。所以输入6回车。此处没有截图,因为忘记截图了。

7.安装ubuntu:

chroot-distro install ubuntu

出现

~ $ chroot-distro install ubuntu
-bash: cannot set terminal process group (25325): Inappropriate ioctl for device
-bash: no job control in this shell
root@localhost:~#

意味着成功了。

[!warning]
到这里其实一切都很正常。也比较简单,几乎不会出什么问题。重点在下面步骤。

8.更新ubuntu内置包
在termux中执行apt update命令,然后会遇到报错问题。

解决apt update 办法是:

8.1 用MT管理器,把/data/local/chroot-distro/ubuntu/etc/pam.d/su-l这个文件中的这句话注销就不会报错了: # session optional pam_keyinit.so force revoke。也就是在这句话前面加上#号,或者删除这句话。

8.2 继续在termux中执行下面这代码:

cat > /etc/resolv.conf <<'EOF'
nameserver 223.5.5.5
nameserver 119.29.29.29
nameserver 8.8.8.8
nameserver 1.1.1.1
EOF

groupadd -g 3003 aid_inet

groupadd -g 3004 aid_net_raw

groupadd -g 1003 aid_graphics

usermod -g 3003 -G 3003,3004 -a _apt

usermod -G 3003 -a root

9.安装几个最基础的工具:

apt install -y curl wget vim nano iproute2 procps ca-certificates

如果输入
ip addr 或者输入ps -ef | head
都有输出,那就表示ubuntu现在基本可用了

10.创建普通用户和禁止root用户登录

为了安全,强烈建议使用拥有 sudo 权限的普通用户进行日常操作,然后禁止 root 用户直接通过 SSH 登录。在termux中的操作如下:

创建新用户:

useradd -m -s /bin/bash 用户名

更改密码:

passwd 用户名

安装 sudo:

apt install -y sudo

加入sudo组:

usermod -aG sudo server

更改密码时,控制台看不见,自己注意输入就行

测试普通用户提权是否ok:

先退出整个temux,重新进入termux,然后输入su回车

接着登录ubuntu:

chroot-distro login ubuntu

然后切换到刚刚创建的普通用户

su - 用户名

进入后测试提权:

sudo -i

如果能进入:

root@localhost:~#

说明普通用户创建成功,并且 sudo 正常。

11.如何禁止root ssh登录:

先安装ssh:

apt install -y openssh-server

直接执行这组命令:

if grep -qE '^[# ]*PermitRootLogin' /etc/ssh/sshd_config; then  sed -i 's/^[# ]*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_configelse  echo 'PermitRootLogin no' >> /etc/ssh/sshd_configfi

然后确认:

grep -n '^PermitRootLogin' /etc/ssh/sshd_config

应该看到:

PermitRootLogin no

如果不放心,也可以用mt管理器,进入/data/local/chroot-distro/ubuntu/etc/ssh/sshd_config 中查看。

[!note]结束语
还是老规矩,有什么问题欢迎大家及时反馈。看到后都会一一回复解答的

5 个帖子 - 4 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文