用Termux拯救你的闲置手机

TMaize 于 2019-07-27 发布

Termux 是一款能够为 Android 手机提供 Linux 环境的应用,支持 pkg 包管理来安装 python, nodejs,golang 等程序,是闲置手机废物利用的好助手。

安装 ssh 服务端

要知道使用传统键盘敲命令行的体验可是 Android 键盘不能比拟的,这里介绍下远程链接 Termux 的两种方式

pkg install openssh

安装完成后会在/data/data/com.termux/files/usr/etc/ssh/目录下生成几种常见的公钥/密钥对,以及sshd_configssh_config

安装好之后,我们需要手工启动 sshd,注意 sshd 监听的是 8022 端口而不是 22 号端口

# 启动
sshd

密码登陆

说明下 Termux 的 sshd 可以通过密码登陆的,不要相信网上的破教程,一个登陆搞这么麻烦

先说明下网络环境,我的电脑和手机都是连接的同一个 WIFI,手机的 IP 是 192.168.1.105

# 获取用户名
whoami
# 重置密码
passwd

切换到电脑,使用 ssh 命令登入,简单点也可以使用图形化的 xshell

# 这里使用任意用户名都可以登陆进去
# 因为Termux是单用户的,所以说上面的whoami没什么用处
ssh -p 8022 root@192.168.1.105
# 提示输入密码

1.png

密钥登陆

使用ssh-keygen命令生成公钥和私钥,默认参数会在~/.ssh目录下生成id_rsaid_rsa.pub这两个文件

主要的难度就是怎么把公钥给拷到电脑上,把公钥复制到 SD 卡然后找到文件通过 QQ 发给电脑就行了

另外 sshd_config 已经打开了密钥登录功能,无需再配置

# 申请SD卡读写权限
termux-setup-storage
cd ~/.ssh
# 服务器上安装公钥
cat id_rsa.pub >> authorized_keys
# 权限
chmod 600 authorized_keys
chmod 700 ~/.ssh
# 拷贝密钥到SD卡,顺便重命名了下
cp id_rsa /storage/emulated/0/Download/id_rsa_termux

切换到电脑,复制id_rsa_termuxC:\Users\用户名\.ssh

ssh -i C:\Users\tmaize\.ssh\id_rsa_termux -p 8022 root@192.168.1.105

如果你嫌命令太长,可以在C:\Users\用户名\.ssh下新建config文件,内容如下

Host termux
     HostName 192.168.1.105
     Port 8022
     IdentityFile C:/Users/tmaize/.ssh/id_rsa_termux
     PreferredAuthentications publickey
     User root

然后直接ssh termux就行了

包管理

下面是包管理的常用命令

pkg search <query>              搜索包
pkg install <package>           安装包
pkg uninstall <package>         卸载包
pkg reinstall <package>         重新安装包
pkg update                      更新源
pkg upgrade                     升级软件包
pkg list-all                    列出可供安装的所有包
pkg list-installed              列出已经安装的包
pkg shoe <package>              显示某个包的详细信息
pkg files <package>             显示某个包的相关文件夹路径

基本使用

速度慢的话可以换成国内源,注意有梯子话推荐使用默认源,不然可能会有一些奇怪的 bug

vi  $PREFIX/etc/apt/sources.list
# 修改为
# deb https://termux.net stable main
deb https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24 stable main

vi  $PREFIX/etc/apt/sources.list.d/science.list
# 修改为
# deb https://dl.bintray.com/grimler/science-packages-21 science stable
deb https://mirrors.tuna.tsinghua.edu.cn/termux/science-packages-24 science stable

vi  $PREFIX/etc/apt/sources.list.d/game.list
# 修改为
# deb https://dl.bintray.com/grimler/game-packages-21 games stable
deb https://mirrors.tuna.tsinghua.edu.cn/termux/game-packages-24 games stable

安装常用工具

pkg update
pkg install curl wget git unzip golang nodejs

开启访问外置存储

# 运行完成后会在家目录生成 storage 目录
# 会把 SD 卡下常用几个目录给链接进去
# 当然也可以使用绝对路径去访问,一般是/storage/emulated/0/
termux-setup-storage

当锁屏后,使用ssh远程连接输命令会特别卡,使用下面命令可以解决

termux-wake-lock

目录结构说明

# 这个相当于根目录
echo $PREFIX
/data/data/com.termux/files/usr

# 这个就是用户目录
echo $HOME
/data/data/com.termux/files/home

由于没有 root 权限,cd / ls 这个命令肯定是执行不了的,对此可以使用下面的命令来模拟

pkg install proot
termux-chroot # 一个新的用户登入,exit退出

cd /
ls -l # 看看有什么变化^o^

可以做什么

目前常见的就是做离线下载用了

常见的语言都是支持的,python,nodejs,golang 等,也可以安装其他二进制包但是注意要是 arm 版本的,所以几乎是可以做任何事情

另外在 windows 上交叉编译 golang 到 android 上运行可以使用下面的参数

set GOOS=linux
set GOARCH=arm

另外如果想公网访问可以使用 Ngrok 等服务

参考

Termux 高级终端安装使用配置教程