TermuxにWi-Fi経由でSSH接続する

この記事での設定方法は少し冗長です。AndroidにTermuxを入れてSSHで入ってLinux環境を作る【まとめ版】の1~3の方が簡単です。

前回はTermuxにUSB経由でSSH接続する方法でしたが、今回はTermuxにWi-Fi経由で入る方法です。

1.PC: 鍵を生成してAndroidへ送る

まずAndroidとPCを用意してUSBでつなげます。

Wi-Fi接続の場合でも最初はUSBでPCとAndroidを繋がなきゃダメです。

次に、秘密鍵と公開鍵を生成し、Androidに送ります。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 鍵の生成
$ cd ~/.ssh
$ ssh-keygen -t rsa -b 2048 -f <名前>
公開鍵:名前.pub
秘密鍵:名前
が生成される

# 端末を認識
$ adb devices
# 端末にadb接続していいかアラートが表示されるのでOKする

# 公開鍵をAndroidへ 表示されたIDにpush
$ adb -s <id> push <公開鍵> /sdcard/Download/<公開鍵>

ここまではUSBで繋ぐのと一緒です。

2.Android: Termuxで鍵を設定する

AndroidでTermuxを起動して、そこで公開鍵を設定します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# storageを有効化
## これをやらないとpushした鍵が見つからない
$ termux-setup-storage

# 公開鍵がpushされているか確認
$ ls -l ~/storage/downloads/<公開鍵>

# 公開鍵をauthorized_keysに追加
$ cat ~/storage/downloads/<公開鍵> >> ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

# ssh起動
$ sshd
# 何も出力されないがそれでいい

ここもUSBで繋ぐのと一緒です。

3.Android: ipの確認

AndroidのTermuxで下記のコマンドをたたく。

1
2
3
4
5
6
7

# ipコマンドが無い場合はiproute2をインストールする
$ pkgi install iproute2

# ip確認
$ ip -4 a
## IPっぽいものが表示されます192.168.x.xxx みたいな

もしくはAndroid端末の[設定] => [システム] => [端末情報] => [端末の状態] のIPアドレスの部分を確認。

[設定]以降は端末によって結構違うので根気よく探してください。

4.PC: PCからSSH接続

PCからWi-Fi経由でSSH接続します。

1
2
3
4
5
6
# 接続
$ ssh -p 8022 -i ~/.ssh/<秘密鍵> <ip>

## 例 秘密鍵が ~/.ssh/aiueo 、 AndroidのIPが 192.168.1.1 の場合
$ ssh -p 8022 -i ~/.ssh/aiueo 192.168.1.1

5.接続できない場合

PCとAndroidをUSBで接続します。

PCから下記のコマンドを叩く。

1
2
3
4
5
6
7
8
$ adb devices
# 端末にadb接続していいかアラートが表示されるのでOKする

$ adb tcpip 5555
$ adb connect 192.168.1.1

#特にエラーが出なかったらUSBは抜いて大丈夫

コマンドを打ち終わったら再度 4. を試してください。
なお、USBは外して大丈夫です。

もちろん~/.ssh/configに設定を書いておいて接続することも可能です。

USB接続に比べるとWi-Fiは結構遅いですが、無線なのでまあそういうもんです。

速度が気になるのであればUSB接続の方が速いので、そっちを使いましょう。