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