Android
MacOSX
SSH
OpenSSH
SSHDroid

覚え書き:macOSからsshでAndroid(SSHDroid)にログインする

はじめに

macOSからSSHDroidが起動しているAndroid端末にsshコマンドでログインする手順のメモです。
(SSHDroidはGoogle Playで入手してインストールし、起動させておいてください。)

参考)https://man.openbsd.org/ssh_config

紹介する手順は、openSSH利用時に必要な一般的な設定であり、macOS固有という訳ではありませんが、フリーソフトを利用することの多いWindowsと比べると、macOS/UNIX等では設定の定義などあらかじめ作成して置かなければならない作業があるため、覚え書きとしてまとめたものです。

macOSに標準のsshコマンド(OpenSSH)で、下記のようにユーザー名、IPアドレス、ポート番号を指定して接続しようとしても、"Could not resolve hostname ..."といったエラーメッセージが表示されて接続することができません。

yuza-no-MacBook:~ yuza$ ssh root@192.168.xxx.xxx:2222 
ssh: Could not resolve hostname 192.168.xxx.xxx:2222: nodename nor servname provided, or not known

~/.ssh/configの作成、または/etc/ssh/ssh_configの編集

viエディタなどで、~/.ssh/configを作成します。
(全ユーザー共通の設定にしたい場合は、rootユーザー権限で/etc/ssh/ssh_configを編集してください。編集前にあらかじめバックアップもとっておきましょう。)

192.168.xxx.xxxは、Android端末でWiFi接続した際に割り当てらえれたプライベートIPアドレスです。皆さんの環境に合わせて変更してください。

"#"の文字以降はコメントです。動作には関係ありませんので入力しなくても構いません。

yuza-no-MacBook:~ yuza$ vi ~/.ssh/config
~/.ssh/config
# for SSHDroid running android terminal
Host my_android              # sshコマンドではこのエントリ名を指定します
 HostName 192.168.xxx.xxx    # 名前解決を利用しない場合は、IPアドレスでも記述可
 Port 2222
 User root
 IdentityFile ~/.ssh/id_rsa_secret_key

DNSでホスト名(FQDN)からIPアドレスへの名前解決ができる場合や、/etc/hostsファイルにAndroid端末のホスト名を記述済みの場合は、HostNameフィールドは下記のようにFQNDやホスト名で記述しても構いません。

yuza-no-MacBook:~ yuza$ cat /etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost 

192.168.xxx.xxx my_android
yuza-no-MacBook:~ yuza$ vi ~/.ssh/config
~.ssh/config
# for SSHDroid running android terminal
Host my_android         # sshコマンドではこのエントリ名を指定します
 HostName my_android    # 名前解決可の場合は、ホスト名またはFQDNで記述しても良い
 Port 2222
 User root
 IdentityFile ~/.ssh/id_rsa_secret_key

sshコマンドの実行

下記のようにAndroid端末のIPアドレスまたは~./ssh/configに記述したエントリ名(Hostの後に記述した名前)を指定してsshコマンドを実行します。

yuza-no-MacBook:~ yuza$ ssh my_android

初めての接続の場合、公開鍵が作成されて登録されたあと、fingerprintの表示に続いてconnecting (yes/no)?と尋ねてくるので、yesと入力しておきます。

The authenticity of host '[my_android]:2222 ([192.168.xxx.xxx]:2222)' can't be established.
RSA key fingerprint is SHA256: (ここにはフィンガープリントが表示される)
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[my_android]:2222' (RSA) to the list of known hosts.

続いてパスワードを入力します。password:のあとに、SSHDroidのデフォルトパスワードadminと入力します。

SSHDroid
Use 'root' as username
Default password is 'admin'
root@my_android's password:

下記のようなプロンプトが表示されれば、ログイン成功です。
(SSHDroidのユーザー名やホスト名は伏せています)

u0_aXXX@XX-XXXX:/data/data/berserker.android.apps.sshdroid/home $

あとは好きなようにコマンドを入力してみてください。