Android端末にTermux + Dropbearでssh login

TermuxはAndroid上でLinux環境が構築できる独自パッケージシステムなアプリケーションです．端末ソフトも同梱されています．Termux-apiを使うとshellでAndroidの操作が出来てちょっと面白いのですが，Androidのタッチパネルで文字を打つのが面倒．リモート操作したいのでsshdが動かないか試してみました．

Termux | F-Droid – Free and Open Source Android App Repository

Termux – Google Play のアプリ

パッケージを検索してみます．定番のOpenSSHとDropbearが使えそうです．

$ pkg search ssh
Hit:1 https://termux.net stable InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
Sorting... Done
Full Text Search... Done
autossh/stable 1.4f arm
Automatically restart SSH sessions and tunnels

corkscrew/stable 2.0-1 arm
A tool for tunneling SSH through HTTP proxies

dropbear/stable,now 2018.76-1 arm [installed]
Small SSH server and client

libssh/stable 0.7.5-1 arm
Tiny C SSH library

libssh-dev/stable 0.7.5-1 arm
Development files for libssh

openssh/stable 7.7p1-2 arm
Secure shell for logging into a remote machine

sshpass/stable 1.06 arm
Noninteractive ssh password provider

今回は操作ができればいいので消費リソースの少ないDropbearを選択しました．

$ pkg install dropbear

$ dropbear -h
Dropbear server v2018.76 https://matt.ucc.asn.au/dropbear/dropbear.html
Usage: dropbear [options]
-b bannerfile Display the contents of bannerfile before user login
(default: none)
-r keyfile Specify hostkeys (repeatable)
defaults:
dss /data/data/com.termux/files/usr/etc/dropbear/dropbear_dss_host_key
rsa /data/data/com.termux/files/usr/etc/dropbear/dropbear_rsa_host_key
ecdsa /data/data/com.termux/files/usr/etc/dropbear/dropbear_ecdsa_host_key
-R Create hostkeys as required
-F Don't fork into background
(Syslog support not compiled in, using stderr)
-w Disallow root logins
-G Restrict logins to members of specified group
-T Maximum authentication tries (default 10)
-j Disable local port forwarding
-k Disable remote port forwarding
-a Allow connections to forwarded ports from any host
-c command Force executed command
-p [address:]port
Listen on specified tcp port (and optionally address),
up to 10 can be specified
(default port is 8022 if none specified)
-P PidFile Create pid file PidFile
(default /data/data/com.termux/files/usr/var/run/dropbear.pid)
-i Start for inetd
-W <receive_window_buffer> (default 24576, larger may be faster, max 1MB)
-K <keepalive> (0 is never, default 0, in seconds)
-I <idle_timeout> (0 is never, default 0, in seconds)
-V Version

鍵を用意します．普通に~/.ssh/authorized_keysに公開鍵を登録すれば良いようです．PCで作成した鍵ペアの公開鍵を登録しました．

$ cd && pwd
/data/data/com.termux/files/home
$ ls -lA ~/.ssh
total 4
-rw------- 1 u0_a235 u0_a235 170 Jun 20 03:58 authorized_keys

sshデーモンを起動します．オプションは適当でポート番号を2222番にしています．

$ dropbear -w -T 2 -j -k -p 2222 -I 600

Androidのipアドレスを確認して，

$ ip r
default via 192.168.2.1 dev wlan0 metric 322
100.93.0.128/26 dev rmnet0 proto kernel scope link src 100.93.0.160
192.168.2.0/24 dev wlan0 proto kernel scope link src 192.168.2.211 metric 322

PCからこんな感じで接続してみると繋がりました!

$ ssh u0_a235@192.168.2.211 -p 2222 -i ~/.ssh/id_ed25519_termux

これで操作が楽に&端末の結果を保存しやすくなりました．

追記)
Dropbearを止める

$ pgrep dropbear
10925
10958
$ pkill dropbear