Termux 使用教程

前言

Termux 是一个 An­droid 下的终端模拟器,可以在手机上模拟 Linux 环境。它是一个手机 App,可以从应用商店直接下载安装,打开就能使用,它提供一个命令行界面,让用户与系统交互。它支持 apt 软件包管理,可以十分方便安装软件包,而且完美支持 Python 、 PHP 、 Ruby 、 Go 、 Nodejs 、 MySQL 等工具。随着智能设备的普及和性能的不断提升,如今手机、平板等设备的硬件标准已经直逼入门级桌面计算机,使用 Ter­mux 完全可以把手机变成一个强大的小型服务器。你甚至可以使用 Ter­mux 通过 Nmap、Sqlmap、BB­Scan、sub­Do­mains­Brute、Hy­dra、Router­Sploit 等工具实现端口扫描、注入检测、子域名爆破、多协议弱口令爆破、路由器漏洞检测框架多种功能,把手机打造成一个随身携带的渗透神器,成为现实版的艾登・皮尔斯。

下载安装

官方推荐从 F-DroidGoogle Play 这两个平台下载,安装完打开就是下面这个样子。

img

基本操作

俗话说” 会跑之前,要先学会走 “,先了解基本操作,以后搞一些骚操作就轻而易举了。

选项和菜单

长按屏幕会出现可选择的复制光标,同时会显示 Copy(复制)、Paste(粘贴)、More...(更多)这几个选项。

img

点击 More... 进入到下一级菜单。

img

长按屏幕
├── COPY: 复制
├── PASTE: 粘贴
├── More: 更多
   ├── Select URL: 选择 URL
   └── Share transcipt: 传输当前会话的所有输出(通过Android api)
   └── Reset: 重置
   └── Kill process: 杀掉当前终端会话进程
   └── Style: 风格配色(需安装 Termux:Styling 插件)
   └── Keep screen on: 保持屏幕开启
   └── Help: 帮助文档(Termux Wiki)

从左侧屏幕边缘向右滑动可以拖出导航栏,在这里可以新建、切换、重命名会话 (ses­sion) 和调出输入法。

img

常用快捷键

在使用终端时,需要使用到 AltCtrlEsc 等键,但手机上并没有这些键。

Ter­mux 中可以使用音量减按钮来模拟 Ctrl 键。例如,音量减 +L 相当于在键盘上按下 Ctrl+L

以下是一些在终端中常用的快捷键,同样适用于 Ter­mux 中。

  • Ctrl+A -> 光标移动到开始位置
  • Ctrl+E -> 光标移动到最末尾
  • Ctrl+K -> 剪切此处至末尾的所有内容
  • Ctrl+U -> 剪切此处至开始的所有内容
  • Ctrl+W -> 剪切此处到左边的单词
  • Ctrl+Y -> 粘贴由Ctrl + UCtrl + DCtrl + W剪切的单词
  • Ctrl+L -> 相当于clear命令,清屏
  • Ctrl+C -> 终止进程/命令
  • Ctrl+D -> 关闭终端
  • Ctrl+Z -> 挂起(发送 SIGTSTP 到)当前进程

音量加按钮可以作为产生特定输入的特殊键,可以粗略的理解为笔记本电脑上的 Fn 键。

  • 音量加+E -> Esc
  • 音量加+T -> Tab
  • 音量加+1 -> F1键(音量增加 + 2相当于F2,以此类推)
  • 音量加+0 -> F10
  • 音量加+B -> Alt+B,使用readline时返回一个单词
  • 音量加+F -> Alt+F,使用readline时转发一个单词
  • 音量加+X -> Alt+X
  • 音量加+W -> 向上箭头键
  • 音量加+A -> 向左箭头键
  • 音量加+S -> 向下箭头键
  • 音量加+D -> 向右箭头键
  • 音量加+L -> |(管道字符)
  • 音量加+H -> (波浪号字符)
  • 音量加+U -> _(下划线字符)
  • 音量加+P -> Page Up键(上一页)
  • 音量加+N -> Page Down键(下一页)
  • 音量加+. -> Ctrl+\(SIGQUIT)
  • 音量加+V -> 显示音量控制
  • 音量加+Q -> 显示额外的按键视图
  • 音量加+K -> 同上

扩展功能按键

前面提到 Ter­mux 可以使用音量键来实现快捷键操作,个人感觉使用音量键不是很不方便。Ter­mux 还提供屏幕扩展功能按键。可以使用音量加 +Q 或者音量加 +K 可以显示和隐藏。

img

此外,功能按键向左滑动可以调出文本输入框,可以更方便的粘贴和对待输入的指令进行更精细的修改。

img

软件包管理

Ter­mux 除了支持 apt 命令外,还在此基础上封装了 pkg 命令,pkg 命令向下兼容 apt 命令。官方建议使用 pkg 命令,因为它会在安装或升级包时会自动更新 apt 列表,也就是说执行 pkg upgrade 相当于执行了 apt update && apt upgrade,简化了操作流程。

命令作用
pkg search搜索包
pkg install安装包,简写pkg i
pkg uninstall卸载包
pkg reinstall重新安装包
pkg update / pkg upgrade升级软件包,简写pkg up
pkg list-all列出可供安装的所有包
pkg list-installed列出已经安装的包
pkg shoe显示某个包的详细信息
pkg files显示某个包的相关文件夹路径

Termux 与标准 Linux 目录结构的区别

与大多数 Linux 发行版不同,Ter­mux 不遵循文件系统层次结构标准,你无法在标准路径找到 /bin/etc/usr/tmp 等目录。为了方便,Termux 提供了一个特殊的环境变量:PREFIX,它相当于 /usr 目录。

$ tree -d -L 1 $PREFIX
/data/data/com.termux/files/usr
├── bin
├── etc
├── include
├── lib
├── libexec
├── share
├── src
├── tmp
└── var

此外用户主目录也在非常规位置。

$ echo $HOME
/data/data/com.termux/files/home

由于没有 root 权限,想对根目录进行操作是不可能的。

$ ls /
ls: cannot open directory '/': Permission denied

对此可以安装 proot,并使用 termux-chroot 命令可以模拟 root 环境与标准的 Linux 目录结构。

$ pkg i -y proot
$ termux-chroot
$ ls /
bin  data  dev  etc  home  lib  proc  root  sbin  share  storage  system  tmp  usr  var  vendor
$ ls /usr
bin  etc  include  lib  libexec  share  src  tmp  var

这对某些必须要用到标准路径的一些程序会非常有用。

root 权限

前面提到的 proot 毕竟是模拟的方式,会有一定的局限性。如果手机已经 root ,在 Ter­mux 中使用 su 虽然可以切换为 root 用户,但是会有一些 Ter­mux 的命令无法正常使用,毕竟这不是一个标准的 Linux 环境。解决方案是安装 tsu 来获取 root 权限,tsu 是 Ter­mux 中的 su 替代方案。

安装 tsu

pkg i -y tsu

使用 root 权限执行命令:

tsudo command

切换到 root 用户:

tsu

在 root 用户下,输入 exit 命令或者按 Ctrl+D 可以回到普通用户。

访问外部存储

Ter­mux 默认只能访问自身内部的数据,如果要访问手机中其它的数据,输入下面的命令后,手机弹出对请求权限的窗口,允许即可。

termux-setup-storage

这个操作将创建 $HOME/storage 目录,此目录中的子目录将通过符号链接到手机存储中的一些常用目录。

$ tree storage
storage
├── dcim -> /storage/emulated/0/DCIM
├── downloads -> /storage/emulated/0/Download
├── movies -> /storage/emulated/0/Movies
├── music -> /storage/emulated/0/Music
├── pictures -> /storage/emulated/0/Pictures
└── shared -> /storage/emulated/0

此外还可以通过 /sdcard 来访问外部存储的根目录。

SSH 连接

作为 Linux 终端或者服务器,SSH 都是必须的。不管你是 SSH 连接到 Ter­mux ,还是使用 Ter­mux 去连其它主机,都需要先安装 openssh

pkg i -y openssh

Termux 使用 SSH 连接其它主机

基本操作,ssh 命令:

ssh User@Host -p Port

SSH 连接到 Termux

手机操作起来毕竟束缚太多,在电脑上通过 SSH 连接再进行操作是一件非常优雅的事情。

  • 设置密码:

    passwd
  • 查看用户名:

    whoami

    由于 Ter­mux 是单用户环境,所以这个步骤不是必须的。使用任何用户名都可以进行登录。

  • 查看 IP 地址:

    ifconfig
  • 启动 SSH 服务端:

    sshd

    SSH 服务端程序默认是不启动的,且每次应用关闭再打开也需要再次启动。后面会讲如何自启 SSH 服务端。

集齐 SSH 三要素,现在可以在电脑终端中输入 ssh 命令或者使用其它 SSH 客户端进行连接了。需要注意的是 Ter­mux 的 SSH 端口是 8022

ssh User@Host -p 8022

执行 ssh 命令后,输入密码就可以连上了,然后就可以在电脑上方便的进行各种骚操作了。

img

配置 SSH 密钥登录

如果需要将 Ter­mux 的 SSH 端口暴露在公网,为了安全建议配置密钥登录。

操作和一般的 Linux 发行版没有区别,属于基本操作。如果你不知道如何配置可以去看《使用 ssh-keygen 和 ssh-copy-id 配置 SSH 密钥实现免密登陆》和《使用 Xshell 给 Linux VPS 配置 SSH 密钥实现免密登录》这两篇教程补补课,这里不再赘述。

友情提示:sshd_config文件的路径是$PREFIX/etc/ssh/sshd_config

推荐使用 SSH 密钥一键配置脚本,它可以从 GitHub 或者链接中获取公钥并自动配置。只要你在 GitHub 上设置过公钥,配置后就直接可以使用连接 GitHub 仓库的 SSH 密钥进行登录。

SSH 服务端(sshd)自启

如果不想每次 ssh 连接 Ter­mux 前去输入 sshd 命令可以设置自启。sshd 自启分两种情况,一种是打开 Ter­mux 应用时自启,还有一种是手机开机后自启。

打开应用时自启 SSH 服务端

sshd 命令添加到 Shell 配置文件中即可,比如我使用的是 zsh ,那么就添加到 ~/.zshrc 中。如果是 bash ,那么就添加到 ~/.bashrc

echo "sshd" >> ~/.zshrc

手机开机后自启 SSH 服务端

首先安装 Termux:Boot 插件,安装后给予该插件开机启动的权限,这样 Ter­mux 就可以在开机后自启了。

创建 ~/.termux/boot/ 目录(这个目录中放置的脚本会在开机启动 Ter­mux 后执行)。

mkdir -p ~/.termux/boot/

在该目录中新建一个脚本,命名为 start-sshd,把 sshd 命令添加到这个文件中即可。

echo 'termux-wake-lock; sshd' > ~/.termux/boot/start-sshd

termux-wake-lock命令可防止手机休眠导致 Ter­mux 应用的进程被冻结。

设置完成后,手机开机会自动启动 Ter­mux ,并开启 SSH 服务端。

ermux优化

终端配色

主要使用了zsh来替代bash作为默认shell.
使用一键安装脚本来安装,一步到位,顺便启动了外置存储,可以直接访问SD卡下的目录.

执行下面这个命令确保已经安装好了curl

Bash

sh -c "$(curl -fsSL https://github.com/Cabbagec/termux-ohmyzsh/raw/master/install.sh)"

img

Android6.0以上会弹框确认是否授权,允许授权后Termux可以方便的访问SD卡文件.
脚本允许后先后有如下两个选项:

Enter a number, leave blank to not to change: 14
Enter a number, leave blank to not to change: 6

分别选择背景色字体
想要继续更改挑选配色的话,继续运行脚本来再次筛选:

Bash

$ ~/termux-ohmyzsh/install.sh

exit重启sessions会话生效配置

访问外置存储优化

执行过上面的zsh一键配置脚本后,并且授予文件访问权限的话,会在家目录生成storage目录,并且生成若干目录,软连接都指向外置存储卡的相应目录

img

创建QQ文件夹软连接

手机上一般经常使用手机QQ来接收文件,这里为了方便文件传输,直接在storage目录下创建软链接.
QQ

Bash

ln -s /data/data/com.termux/files/home/storage/shared/tencent/QQfile_recv QQ

TIM

Bash

ln -s /data/data/com.termux/files/home/storage/shared/tencent/TIMfile_recv TIM

最后效果图如下:

img

这样可以直接在home目录下去访问QQ文件夹,非常方便文件的传输,大大提升了工作效率.

oh my zsh主题配色

编辑.zshrc配置文件

Bash

$ vim .zshrc

第一行可以看到,默认的主题是agnoster主题:

img

.oh-my-zsh/themes目录下放着oh-my-zsh所有的主题配置文件.
下面是国光认为还不错的几款主题

agnoster

img

robbyrussell

img

jaischeema

img

re5et

img

junkfood

img

cloud

img

random

当然如果你是个变态的话,可以尝试random主题,每打开一个会话配色主题都是随机的.

安装常用工具

安装一些基本的常用工具,方便后续的折腾。

pkg i -y git curl wget tree vim nano tmux htop

安装和配置 Oh My Zsh

Oh My Zsh will not make you a 10x developer…but you may feel like one.

上面那句话来自 Oh My Zsh README,意思是 “装逼是第一生产力”。(大雾

我使用 Oh My Zsh 倒不是为把终端搞得花里胡哨去装逼,作为一个实用主义者,我非常喜欢自动建议、补全和代码高亮功能,这极大的提高了终端的输入效率。所以不管什么平台,都会安装 Oh My Zsh 。

安装 zsh

pkg i -y zsh

安装 Oh My Zsh

使用 curl 下载安装

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

使用 wget 下载安装

sh -c "$(wget -O- https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Oh My Zsh 安装完成后会提示你设置 zsh 为默认 sehll 。如果没有提示,输入下面的命令进行设置:

chsh -s zsh

修改 Oh My Zsh 主题

Oh My Zsh 有很多内置主题,只需要修改配置文件即可启用。也可以选择安装外置主题,比如 Powerlevel10k

我使用的主题是 ys,简单实用,不花里胡哨。使用 sed 命令一键修改:

sed -i '/^ZSH_THEME=/c\ZSH_THEME="ys"' ~/.zshrc

修改后输入下面的命令刷新配置就可以看到效果:

source ~/.zshrc

安装 Oh My Zsh 插件

安装 zsh-syntax-highlighting(代码高亮)

git clone https://github.com/zsh-users/zsh-syntax-highlighting $ZSH_CUSTOM/plugins/zsh-syntax-highlighting

安装 zsh-autosuggestions(自动建议)

git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

安装 zsh-completions(自动补全)

git clone https://github.com/zsh-users/zsh-completions $ZSH_CUSTOM/plugins/zsh-completions

zsh-com­ple­tions 插件还需把 autoload -U compinit && compinit 添加到.zshrc。输入命令可一键添加:

[ -z "`grep "autoload -U compinit && compinit" ~/.zshrc`" ] && echo "autoload -U compinit && compinit" >> ~/.zshrc

把需要启用的插件写入到配置文件中,使用 sed 命令一键操作。

sed -i '/^plugins=/c\plugins=(git z zsh-syntax-highlighting zsh-autosuggestions zsh-completions)' ~/.zshrc

如果你有自己想添加的插件,写在括号内即可,插件名称用空格隔开。

最后应用配置

source ~/.zshrc

修改终端配色

修改配色需要安装 Termux:Styling 这个插件,安装好后长按屏幕,进入 More... 菜单,选择 Style 就可以对配色和字体进行设置。这在上篇文章中介绍菜单和选项时有提到过。

img

选择好你自己喜欢的配色和字体,设置好后会在 ~/.termux 目录中生成配色文件 colors.properties 和字体文件 font.ttf,可以把这两个文件进行备份,以后只需要导入即可,就不再需要安装这个插件了。

$ tree ~/.termux
/data/data/com.termux/files/home/.termux
├── colors.properties
├── font.ttf
├── shell -> /data/data/com.termux/files/usr/bin/zsh
└── termux.properties

Bash

ZSH_THEME="random"

管理员身份

手机没有root

利用proot工具来模拟某些需要root的环境

Bash

pkg install proot

然后终端下面输入:

termux-chroot

即可模拟root环境
在这个proot环境下面,相当于是进入了home目录,可以很方便地进行一些配置.

img

在管理员身份下,输入exit可回到普通用户身份。

手机已经root

安装tsu,这是一个su的termux版本,用来在termux上替代su:

Bash

pkg install tsu

然后终端下面输入:

tsu

即可切换root用户,这个时候会弹出root授权提示,给予其root权限,效果图如下:

img

在管理员身份下,输入exit可回到普通用户身份。