AndroidにTermuxを入れてSSHで入ってLinux環境を作る【まとめ版】

このブログでTermuxを使ってAndroidにLinux環境を作る話を何個か書きました。

上記のように似たような記事ばかりで書いた私もよくわからなくなりました。

TermuxでLinux環境を作るために自分のブログを調べても混乱するばかりなので今回は総まとめというか、私にとって必要な部分だけを今回の記事でまとめときます。

0.前提条件

今回のまとめはWi-Fi環境下で行います。ADBを使ってもできますが、ADBはインストールと接続が煩雑なので今回は取り上げません。

条件は下記のとおりです。

  • Android端末とPCが同じWi-Fi内にいる
  • PC側にターミナル的な環境がある
  • PC側でSSHクライアントが使える

1.Androidにアプリのインストール @Android

まず、Android端末にTermuxアプリをインストールします。

Android端末で”Google Play”を起動し、Termuxをインストールします。なおTemux:APIはAndroidのカメラとかを使うためのアプリなので入れなくても大丈夫です。

次にキーボードアプリをインストールします。
下記のどちらかのキーボードアプリがおすすめですが、私はCodeBoardを使っています。

AndroidでTermuxを起動したらまず下記のコマンドを打って最初のセットアップを行います。
この際、先ほどインストールしたキーボードアプリ(CodeBoardとか)を使います。
デフォルトのAndroidのキーボードが表示されると思うのでスペースを長押ししてキーボードを変更してください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# @Android

# /data/data/com.termux/files/home(~)にstorageディレクトリを作る
$ termux-setup-storage

# パッケージのアップデート
$ pkg update
$ pkg upgrade

# よく使いそうなパッケージのインストール
$ pkg install vim
$ pkg install git

# Temux:APIを使うのであれば
## Google Play で Termux:API をインストールしておく必要あり
$ pkg install termux-api

2.Termux側にSSHの設定をする

TermuxにOpenSSHサーバをインストールしてIPを確認します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# @Android

# OpenSSHサーバのインストール
$ pkg install openssh

# OpenSSHサーバーの起動
$ sshd

# IP確認
$ ip -4 a
## inet 192.168.1.x/24 という表記の192.168.1.xの部分がIPになります

# ユーザー名確認
$ id
## uid=xxxxx(u0_axxx) という表記のu0_axxxがユーザー名になります

# パスワード設定 これでパスワードを設定します、適当なパスワードを設定してください
$ passwd

3.PC側からTermuxにログイン

以降はPC側からAndroidのTermuxに入るので操作はPC側から行います。

下記のようにパスワードでログインします。

1
2
3
4
5
6
# @PC

# ユーザー名: u0_axxx, ip: 192.168.1.1の場合
$ ssh -p 8022 u0_axxx@192.168.1.1

# パスワードを聞かれるので先ほどTermux側でpasswdで設定したパスワードを入れる

なお、パスワードを使わず公開鍵認証でSSHログインしたい場合は下記のように行ってください。
パスワードを毎回使っても大丈夫と言う方は下記は飛ばして4に行ってください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# @PC
$ cd ~/.ssh
$ ssh-keygen -t rsa -b 2048 -f <名前>
## 公開鍵:名前.pub
## 秘密鍵:名前
## が生成される
# scpで公開鍵をコピー
$ scp ~/.ssh/名前.pub u0_axxx@192.168.1.1:~/

# .ssh/configに下記を記述
Host ssh2android
HostName 192.168.1.1
User u0_axxx
Port 8022
IdentityFile ~/.ssh/名前
ServerAliveInterval 60


# @PC PCからTermuxにSSHでログインしてから下記を叩く
$ cat ~/名前.pub >> ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

この設定をしておけば次回以降PCからは$ ssh ssh2androidでログインできます。

4.TermuxにLinuxをインストールして起動

LinuxのインストールはAndroidにまともなターミナル環境(Ubuntu on Termux)を作った話で紹介されているUbuntuをインストールする方法を使用します。

1
2
3
4
5
6
7
# @Termux from SSH on PC
# 下記コマンドはホーム(~)でやることを想定しています
# https://nombi.info/posts/computer/uot/ より一部引用
$ pkg install wget openssl-tool proot -y
$ hash -r
$ wget https://raw.githubusercontent.com/EXALAB/AnLinux-Resources/master/Scripts/Installer/Ubuntu/ubuntu.sh
$ bash ubuntu.sh

上記の方法はAnLinux-ResourcesのUbuntuを使用する方法です。このレポジトリにはUbuntu以外にもAlpineやKali Linuxもあるようなのでそちらを使っても行けると思いますが、私はテストしていないので何とも言えません。

その際は上記のコードのUbuntuの部分を当該のLinuxの名前に書きかえればよいと思います。

5.Termux内にLinuxを起動

最後に下記コマンドを叩きます。

1
$ ./start-ubuntu.sh

これでUbuntuが起動します。

また、Termux起動時にOpenSSHサーバーとLinux(Ubuntu)を起動しておきたい場合は下記のコードを~/.bashrcに書いておきます。

1
2
sshd
./start-ubuntu.sh

これでTermuxを起動するとOpenSSHサーバーとLinux(Ubuntu)が起動するのであとはログインするだけとなります。

以上。