目次
はじめに
この記事では、Android端末からリモート開発環境を構築する方法について紹介します。リモート開発環境の構築には、Remote.itとTermux、Termiusを使用します。Remote.itは、インターネット経由でデバイスにリモートアクセスするためのサービスであり、TermuxはAndroid端末上で動作するターミナルエミュレータです。TermuxによってAndroid端末にSSHサーバ機能とWake on lan機能を導入し、自宅のUbuntuサーバの起動スイッチとして利用します。
UbuntuサーバにもRemote.itとopensshを導入しておき、起動したらこちらもRemote.itでSSH接続するだけ!
環境
-
Android端末1(手持ち)
・Remote.it(Proxyサービス経由でSSHサービス利用)
・Termius(SSHクライアントとして利用) -
Android端末2(自宅設置のAndroid10 SIM無しWifi接続)
・Remote.it(Proxyサービス経由でSSHサービス受付)
・Termux(SSHサーバ機能とWake on lan機能をインストールするのに利用) -
デスクトップ(自宅設置)
・Remote.it(Proxyサービス経由でSSHサービス受付)
・openssh
構築手順
各端末ごとの構築手順は大体以下の通り。
Android端末1の環境構築
1.Google PlayストアからRemote.itをインストールします。
Remote.itにはアカウント登録の必要がありますのでアカウント登録をしてください。
私はGoogleアカウント連携でアカウントを作成しました。
Android端末1はサービスを利用するだけですので、最初はインストールするだけで大丈夫です。
2.Google PlayストアからTermiusをインストールします。
3.Termius(SSHクライアント)で公開鍵認証用の鍵ペアを作成
TermiusはSSHクライアントとして利用します。クライアントの公開鍵をSSHサーバとなる
Android端末2とデスクトップにそれぞれ設置する必要がありますので、まずは鍵ペアを作成
①Termiuxの左上のメニューから「Keychain」を選択
②右下の「+」ボタンを選択し、「Generate Key」を選択
③「Name」には使用する鍵の名前を任意に設定。「Type」はデフォルトのED25519で問題ありません。
「Passphrase」に鍵を利用するためのパスワードを設定し、記録しておいてください。
④③の設定が終わったら右上のチェックマークを選択し、鍵ペアの作成は完了です。
⑤Keychain画面に作成した鍵が表示されていますので、作成した鍵を選択
⑥右上のボタンから「Export to file」など選択し、公開鍵を任意のフォルダに保存し置いてください。
⑦保存した公開鍵のファイルはUSB接続でも何でもいいのでAndroid端末2とデスクトップにコピー
してください。
Android端末2の環境構築
1.Google PlayストアからRemote.itをインストール
※Android端末1の時と同様
Android端末2からはRemote.itを経由してSSHサーバサービスを提供します。
Android端末1で使用したアカウントと同様のアカウントでRemote.itにログインし
以下の手順でSSHサーバサービスを設定してください。
①ログイン後のTOP画面で、「ThisDevice」を選択
②Remote.it上でデバイスを識別するデバイス名の入力画面に移動しますので
任意の名前を入力してください。(デフォルトでOK)
③リモート接続に提供するサービスの設定画面に移動しますので
「Target IP Address」にはWifiに接続で利用しているIPアドレスを入力
※私はデフォルトで入力されてました
次の項目では「SSH」を選択してください。「Target Port」の項目が22番に設定されますが、
Termuxで利用するポートは8022番ですので、「Target Port」は8022に設定します。
設定がすべて終わったら、「Start Service」を選択しサービスを開始してください。
2.スリープをしないように設定
Remote.itはAndroid端末2がスリープ状態になると接続が切れてしまいます。常時起動状態とするため
以下のURLを参考にスリープをしないように設定しました。
また、電源節約のために画面の明るさを最低にしています。
3.Termuxをapkファイルからインストール
Termuxは2023年7月30日現在、Google Playからインストールすることができない状態です。
上記リンクから自分の動作環境にあったapkファイルをダウンロードし、実行すれば
アプリのインストールは完了です。
(私は現状での最新版のバージョン0.118.0をインストールしています。)
4.TermuxからSSHサーバ機能のインストール
Termuxのインストールが完了したら、以下のページを参考にSSHサーバの設定を行ってください。
以下のページ上では鍵の作成と権限付与を同じ端末上で行っているように見えますが、
鍵にはAndroid端末1から持ってきた公開鍵を使用してください。
以下ページでは実行している、鍵をストレージにコピーする手順は必要ありません。
6.TermuxからWake on lan機能のインストール
SSHでログイン後はwake on lanのマジックパケットを送信する必要がありますので
以下のコマンドをTermux上で入力し、機能を導入しておきます。
apt install wol
デスクトップの環境設定
1.SSHサーバの構築
SSHサーバの構築についてはググれば情報がいくらでも出てくると思いますので適宜設定してください。
一応参考までに
2.SSHクライアント(Android端末1)の公開鍵の登録
Android端末1からコピーしてきた公開鍵ファイルを以下のコマンドでauthorized_keysに追記し、登録してください。
$ cat 公開鍵ファイルへのパス >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh
3.Remote.itのインストールとSSHサービスの登録
以下のページを参考に導入を進めました。
ログインをする際、私はGoogleアカウントアカウントを使っていたので上記手順では
ログインすることができませんでした。どうやらCLIでGoogleアカウントでのログインを行う際には
認証情報ファイルを作成する必要があるようです。。
上記を参考に、以下のコマンドを実行して認証情報を設定し、ログインします。
$ mkdir -p ~/.remoteit
$ touch ~/.remoteit/credentials
$ remoteit configure
$ remoteit configure
認証情報作成を行うとキー、シークレット、ユーザー定義のプロファイル名を入力するプロンプトが表示されます。
キーがGmeilのアドレス、シークレットがパスワード、プロファイル名は任意・・だったはずです。(うろ覚え)
$ remoteit configure --profile <設定したプロファイル名> --enabled
利用手順
1.Android端末1からAndroid端末2へのRemote.it接続(SSH)
Android端末1でRemote.itを起動してください。オンラインになっているデバイス名の中にAndroid端末2があるはずです。Android端末2を選択すると、オンラインとなっているSSHが選択可能な状態になっているはずですので選択。
CONNECTを選択して接続をしてください。この時、PORTの設定が8022になっていることを確認してください。接続先にはプロキシのURLが表示されますのでLAUNCHを選択し、Termiusを起動してください。
2.Termiusの接続設定
1.手順からTermiusを起動すると、接続のための情報が既に入力されているはずです。Aliasの項目には適当な接続名を設定。Keyの項目を、Android端末1の環境構築の際に作成した公開鍵に変更します。この2点のみを変更すればRemote.it経由でAndroid端末1からAndroid端末2へSSH接続できるはずです。
注意
上記手順で作成した接続は、Remote.itの接続をし直すたびに作成する必要があります。
:::
3.wake on lanによるデスクトップの起動
さて、これでAndroid端末2経由でWake on lanを実施する準備ができました。以下のコマンドでデスクトップ端末の電源を入れてください。
$ wol <デスクトップのMACアドレス>
MACアドレスの形式は"11:22:33:44:55:66のような感じです。MACアドレスを毎回打つのが面倒なので実行ファイルを作成しておくと便利です。
正常に起動すればRemote.itから機器がオンラインになったことが通知されると思います。
4.Android端末1からデスクトップへのRemote.it接続(SSH)
1~2の手順と同様にデスクトップとの接続を実施してください。オンラインのデバイスの中にデスクトップが表れているはずです。
:::note warn
注意
4の手順を実行する前にAndroid端末2との接続を解除しておいてください。同じSSHの接続を同時に行うことはどうやらできないようです。※できる方法知ってる人は教えてください。
まとめ
Android端末からのリモート開発環境構築を行うために、Remote.itとTermuxの組み合わせを紹介しました。ダメですね。思い付きで初めて記事を書いてみましたが、構築しながらでないとスクリーンショットがなく、わかりづらい上に非常に長々とした文章になってしまいました。画像の加工も面倒ですし。。構築の時間より記事を書く時間の方が長くなってしまったような気がします。
次はリモートで開発をしながらMicroStack上に何かWebシステムを構築したいのですが、何を作ろうかなぁ。