はじめに
Androidで動作するクライアントアプリとWebサーバーとの組み合わせで動作するサービスを構築したときに、WebサーバーをAWSなどで公開してデモ環境を構築するのは一手間かかる。また、そのデモ用のWebサーバーのセキュリティーやメンテナンスなどもあまり考えたくない。
デモのための環境は手元でサクッと構築できるのが一番である。そのデモ環境を人に渡す場合もAndroid機器を渡すだけで終了するのであればシンプルに終了する。このよう要求を満たすデモ環境を用意するために、Androidで動作するLinux環境を用意し、そこにデモ用のWebサーバーを構築することにした。
Androidデバイスを手軽にLinux環境に変える方法として、Termuxのインストールと設定、さらにはMacや他のPCからのSSH接続設定までのプロセスを解説する。この記事では、Androidデバイス上でTermuxを使ってLinux環境を構築し、OpenSSHをインストールして外部からのSSH接続を可能にするまでの手順を紹介する。
AndroidにTermuxをインストールし、Linux環境を構築する
まず、AndroidデバイスにTermuxアプリをインストールする。Google PlayストアまたはF-DroidからダウンロードできるがGoogle PlayストアのTermuxの更新はストップしているため最新のTermuxをインストールするためにはF-Droidからインストールするのが良いだろう。
- F-Drodアプリをインストールする
- F-Droidアプリから Termux をインストールする
Termuxのインストールが完了したら、Androidのアプリ一覧でTermuxを選択してアプリを開き、以下の初期設定コマンドを実行する。
$ pkg up
$ termux-setup-storage
これらのコマンドは、Termuxのパッケージを最新状態に更新し、ストレージへのアクセス権を設定するものである。
SSHサーバーの設定と接続
ユーザーIDの確認
Termuxで作業を進めるにあたり、まず現在のユーザーIDを確認する。
$ id
uid=10177(u0_a177) gid=10177(u0_a177) groups=10177(u0_a177),3003(inet),9997(everybody),20177(u0_a177_cache),50177(all_a177)
このコマンドは、Termuxが割り当てたユーザーID(u0_a177
)を表示する。このIDは後ほどSSH接続時に使用する。
パスワードの設定
次に、SSH接続に必要なパスワードを設定する。
passwd
この手順により、SSH接続時の認証情報を確立する。
ネットワークアドレスの確認
SSH接続を行うには、ネットワーク上のデバイスアドレスを知る必要がある。
$ ifconfig
dummy0: flags=195<UP,BROADCAST,RUNNING,NOARP> mtu 1500
inet6 fe80::3ceb:aeff:fe44:3956 prefixlen 64 scopeid 0x20<link>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 ...
...
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.81 netmask 255.255.255.0 broadcast 192.168.1.255
...
このコマンドは、デバイスのIPアドレスを含むネットワーク情報を表示する。ここで表示されるIPアドレス(192.168.1.81
)をメモしておく。
OpenSSHのインストール
TermuxにOpenSSHをインストールすることで、SSHサーバー機能を追加する。
$ pkg install openssh
この操作により、SSHサーバーの設定と鍵の生成が自動で行われる。
sshdの起動
インストール後、SSHサーバーデーモンを起動する。
$ sshd
このコマンドは、TermuxがSSH接続を受け入れるようになる。
ホストからのSSH接続
Macや他のPCからTermuxのSSHサーバーに接続するには、以下のコマンドを使用する。
$ ssh -p 8022 ユーザーID@デバイスのIPアドレス
今回の場合なら
$ ssh -p 8022 u0_a177@192.168.1.81
ユーザーIDとデバイスのIPアドレスは、前の手順で確認したものを使用する。
sshdの自動起動設定
Termuxを起動するたびに自動でsshdを起動させるため、.bashrc
に起動コマンドを追記する。
pkg install vim
vi ~/.bashrc
ファイルの末尾にsshd
と追記し、保存する。
スリープモード時の接続
Androidがスリープモードに入った場合はSSH接続が切れてしまう。SSH接続を維持するためには、以下のコマンドを実行する。
$ termux-wake-lock
この設定を解除したい場合は、下記のコマンドを実行する。
$ termux-wake-unlock
参考情報
この記事で紹介した内容に関するさらなる情報は、以下のリンクから参照できる。
Androidデバイスを用いてLinux環境を構築し、外部からのSSH接続を可能にするこのプロセスを通じて、リモート作業の幅が大きく広がるだろう。