Android: SSHデーモンを有効にする

Google Playにsshサーバーアプリはありますが広告がついていたりするので使いたくない場合があります。Androidにsshdサーバがある場合はそれを使ってサーバを起動してみます。ユーザー名はandroidでアクセスするのですがパスワードの設定をしたくない(または出来ない)のでRSA鍵を使ってアクセスできるようにします。root化してあることが前提です。

スクリプトマネージャーとBusybox(Stephen版) をPlayストアからインストールします。sshdデーモンのスクリプトを起動するために使います。

アンドロイドはLinuxにシステムが近いのですが異っている部分も多いのでアンドロイドの環境に合わせて設定します。アンドロイドをデベロッパーモードにしadbを使えるようにします。/etcは読込専用であるため/dataにssh用のディレクトリを作成します。

sshサーバ鍵の作成

adbでアンドロイドにアクセスします。

sdb shell

root権限にします。

su

ssh用のディレクトリを作成します。

mkdir /data/ssh

sshサーバの鍵を作成します。

RSA鍵の作成(鍵は2048ビットまた4096ビットにします)

ディレクトリ付きでファイル名を入力します。パスワードは無しにします。これで秘密鍵と公開鍵が作成されます。

ssh-keygen -t rsa -b 2048 -f /data/ssh/ssh_host_rsa_key

同じようにDSA鍵の作成します。ディレクトリ付きでファイル名を入力します。パスワードは無しにします

ssh-keygen -t dsa -b 1024 -f /data/ssh/ssh_host_dsa_key

Clientの公開鍵を登録

/data/ssh/authorized_keysにClientの公開鍵を書込みます。

cat > /data/ssh/authorized_keys <<'EOF'
...
(クライアントの~/.ssh/id_rsa.pubの内容をカット&ペストします)
...
EOF

sshdの設定ファイルは/etc/ssh/sshd_configです。この設定を変更せず使います。

サーバを起動できるか試してみます。

/system/bin/sshd -f /etc/ssh/sshd_config

psコマンドで確認します。起動が確認できたら公開鍵を登録した同じユーザーでsshログインをしてみます。

ifconfigでサーバのIPアドレスを確認して、

ssh root@<サーバIP>

アクセスが確認できたらsshデーモンを終了します。

kill `pidof ssh`

スクリプトマネージャーに登録

スクリプトマネージャーを起動します。ディレクトリ/storage/emulated/0/scriptsを作って移動します。

•••マークを押してNew Scriptを選択します。

起動スクリプト名をstart_sshdとして、editボタンを押します。

#!/system/bin/sh
echo 'Starting SSH Server...'
/system/bin/sshd -f /etc/ssh/sshd_config

編集が終わったら•••マークを押してsaveを押します。

スクリクト名をstop_sshdとして、editボタンを押します。

#!/system/bin/sh
echo 'Stopping SSH Server...'
/system/xbin/kill `/system/bin/pidof sshd`

編集が終わったら•••マークを押してsaveを押します。

一つ前の画面に戻りroot権限で実行できるようにSuボタンを押しセーブします。

以上でScriptの画面からsshサーバの起動・停止ができるようになります。