TermuxにUSB経由でSSH接続する

TermuxはAndroidのソフトウェアキーボードでコマンドを入力しなくてはならないので結構大変です。

コマンドを打ちやすい”CodeBoard”とかを入れてもタッチで入力するには結構限界があります。

そこで、今回はTermuxにUSBケーブル経由でSSH接続する方法を説明します。

SSHで入ればPCのキーボードでコマンドが打てます。

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

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

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

Windowsならcygwin、Macならターミナルを開きます。

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
## deviceのidをメモ

# 公開鍵をAndroidへ 表示されたIDにpush
$ adb -s <id> push <公開鍵> /sdcard/Download/<公開鍵>
  1. Android: Termuxで鍵を設定する

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 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
# 何も出力されないがそれでいい

## PCで~/.ssh/configに接続先を記述したくない場合は下記のコマンドで<ユーザ名>を確認しておく
$ ls -lA ~/.ssh
  1. PC: PCからSSH接続

PCからAndroidにSSHで接続します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# ポートを設定
$ adb forward tcp:8022 tcp:8022

# ssh接続
## 方法1 ~/.ssh/configに追加する方法
$ vim ~/.ssh/config
Host xxx
HostName 127.0.0.1
IdentityFile ~/.ssh/<秘密鍵>
Port 8022

### 接続
$ ssh xxx

## 方法2 sshコマンドのみで接続する方法
### 事前に<ユーザ名>がわかっているのが条件
### 接続
$ ssh -p 8022 -i ~/.ssh/<秘密鍵> <ユーザ名>@127.0.0.1


# WARNINGが出る場合は
$ ssh-keygen -R 127.0.0.1:8022
or
$ ssh-keygen -R [127.0.0.1]:8022

これでPCからTermuxに入れます。
PCのキーボードで色々ゴニョゴニョできます。

もちろん~/.ssh/configに書かなくても秘密鍵とホストとポートを指定すれば普通にSSH接続できます。

Wi-Fiで接続する場合はこっちを参考にしてください。