强大的终端模拟器:Termux

我们现在使用的主流桌面系统都会自带命令行程序,Windows也不例外(Windows10推出了Bash Shellpowershell),可见单独使用图形界面已经不能满足我们的需求了,特别是对我这种从事软件开发工作的人来说,一个系统中没有命令行会引起极度不适.但是我们常用的智能手机上就缺少这么一种方便的工具,目前的手机在硬件方面已经达到初级的桌面计算机的标准,比如我手里这款两年前买的小米5sp,4核6G内存128G存储空间,在上面运行一些常规软件完全不是问题.

强大的终端模拟器:Termux_第1张图片

大家都知道,Android是基于Linux内核,所以它本身就是就可以当做一台Linux主机来用(苹果手机的话好像必须要越狱,这里就不管他了),可以在上面安装Python,git,openssh,数据库等.Android是一个单用户图形化系统,功能主要是以应用的形式来呈献给用户,因此在系统上我们无法直接获取终端,也就无法使用丰富的Linux命令了.但是借助终端模拟器,可以实现这一需求.之前我也用过一些工具,但是都不太好用,就给卸载了,直到我发现了Tremux这款神器.

简介及安装

Termux is an Android terminal emulator and Linux environment app that works directly with no rooting or setup required. A minimal base system is installed automatically - additional packages are available using the APT package manager.
Termux combines powerful terminal emulation with an extensive Linux package collection.
• Enjoy the bash and zsh shells.  
• Edit files with nano and vim.  
• Access servers over ssh.  
• Develop in C with clang, make and gdb.
• Use the python console as a pocket calculator.  
• Check out projects with git and subversion.  
• Run text-based games with frotz.  

At first start a small base system is downloaded - desired packages can then be installed using the apt package manager. Access the built-in help by long-pressing anywhere on the terminal and selecting the Help menu option to learn more.

官网
Google Paly下载地址

强大的终端模拟器:Termux_第2张图片

下面是启动Termux之后的界面,底部的虚拟键盘有一些在Linux上经常用到但是手机键盘上没有的按键(音量键+q 显示/隐藏),截图中提示可以使用pkg命令来管理包,但是Termux也自带apt包管理器,并且维护着适合Android的库,有自己的软件源.

强大的终端模拟器:Termux_第3张图片

开始使用

首先,打开Termux进入的home目录在Android系统中的位置是:/data/data/com.termux/files/home,
另外环境变量$PREFIX=/data/data/com.termux/files/usr指向Termux的/usr目录,使用apt install vim 安装vim编辑器.

强大的终端模拟器:Termux_第4张图片

特点

  • 类型

这是一款大小只有几百K的apk,安装后可以在Android手机上搭建一个完整的Linux环境。

  • 工作方式

命令行,乍看之下很不友好,实则提供了很多隐藏的功能,实际上手之后非常好用。

  • 关于软件源

Termux有官方的软件源,网速挺快,与Linux软件源保持同步。

  • 关于root

无需root!无需root!无需root!不需要root权限Termux就可以正常运行,不过需求多的用户能root自然是最好了,很多需要root权限的命令就可以执行了,包括文件管理上也会很方便。

  • 可拓展性

很强,挖个坑,以后介绍。

SSH登录

在手机上使用命令行还是很不方便的,主要是键盘的问题,我们最好是能通过SSH在电脑上链接Termux,再进行操作,当然也可以用手机链接电脑,在外出的时候,电脑不在身边,也可以进行一些操作.
Termux终端中使用ssh访问远程服务器与Linux终端中使用ssh别无二致。但要使用ssh访问Android设备就不同了,Termux终端中sshd服务不支持密码验证,也就是说用户不能期望通过ssh [email protected]然后输入用户密码的方式从别的终端访问Android设备。Termux终端中sshd只支持密钥验证。

例如,我的电脑IP为172.16.128.96,用户名为admin;
手机的IP为172.16.128.245,用户名u0_a494;
(IP和用户名分别用ifconfig和whoami查看)

  1. termux安装openssh
# 安装
apt update
apt install openssh
# 启动
sshd
  1. 在电脑上生成秘钥
ssh-keygen -t rsa

会生成两个文件id_rsa和id_rsa.pub,并保存在~/.ssh/下,前者是私钥,后者是公钥.
如果电脑上已经生成过秘钥了则可以跳过这一步.

  1. 传送id_rsa.pub到安卓手机上

在手机上Termux终端输入以下命令

cd
scp [email protected]:.ssh/id_rsa.pub .

接下来会提示输入电脑上的用户密码.
传送完之后将电脑的公钥添加到手机的授权文件里:

cat id_rsa.pub >> .ssh/authorized_keys

当然也可以通过其他方式来传输公钥,反正最终的目的就是把电脑的公钥内容写入授权文件里就好了.

  1. ssh连接
  2. 在手机上启动sshd服务
sshd
  1. 在电脑终端进行连接

Termux的openssh默认端口是8022

ssh [email protected] -p 8022

如下分别是电脑连手机和手机连电脑的界面
强大的终端模拟器:Termux_第5张图片
后面可以做什么事就请发挥你自己的想象力吧.

参考资料

神器Termux的使用日常
你浪费了一台电脑
ubuntu使用SSH通过Termux登录Android设备

你可能感兴趣的