Termux 是一款能够为 Android 手机提供 Linux 环境的应用。它最大的特点就是无需 root,而且自带 pkg 包管理软件,可以很方便的其他 linux 应用。
可以在 Google Play Store 或 F-Droid 上搜索 Termux 来安装,目前的版本是 0.47。值得一提的是,在豌豆荚上,这个应用的名字似乎变成了 高级终端,而且版本变成了 0.49,不知道是个什么情况。
打开 Termux 会出现一个类似 Linux 终端的界面。由于 sshd 是包含在 openssh 包中的,因此我们首先需要在 Termux 中安装 openssh
pkg install openssh
安装好之后,我们需要手工启动 sshd
sshd
需要指出的是,sshd 监听的是 8022 端口而不是 22 号端口,因此可以使用下面命令来验证 ssh 服务是否开启
ssh localhost -p 8022
若要查看 sshd 的日志,则可以在 Termux 上执行
logcat -s 'syslog:*'
Termux 的 sshd 只能通过密钥登陆,因此你需要在 linux 客户机上生成密钥对
ssh-keygen
把 linux 客户机上的公钥加到 Termux 中的 .ssh/authorized_keys,这一步比较麻烦
因为你无法使用 ssh-copy-id,只能先把 id_rsa.pub 拷贝到手机上,再在手机上打开该文件,拷贝文件内容后在 Termux 中用 vi 打开 authorized_keys,并复制内容进去。
不过如果 linux 客户机上本身也开启了 ssh 服务的话,则会简单很多,可以在 Termux 上执行
ssh user@linux_clinet "cat ~/.ssh/id_rsa.pub" >> ~/.ssh/authorized_keys
就行了,其中 linux_clinet 为 linux 客户机的地址,user 为登陆用户
在客户端上执行
ssh 192.4.4.9 -p 8022
将这里的 192.4.4.9 修改为手机的 ip,就能登陆到 Termux 中了。
手机ip可以通过在 Termux 中运行 ifconfig -a 来查看。
需要说明的是,使用ssh登陆Termux时无需带上用户名,因为 Termux 是单用户系统。即使你登陆时带上了用户名,Termux 也会忽略该用户名
为了方便,我们可以配置一下 ssh client 的配置文件,将下面内容加入到 ~/.ssh/config 文件中
Host termux
HostName 192.4.4.9
Port 8022
这样只需要执行 ssh termux 就能登陆 termx 了。

