androidでOpenSSHを使ってみる
SuperNexus 4.0を導入しているGalaxy S3α SC03Eですがbusyboxに加えて
/system/binにssh,sshd,spc,sftpが存在しています。
これらを動かしてやれば、SC03Eがsshサーバーとして使えるようになって、PCからリモートアクセスできるようになるものと思います。
というわけで、ちょっこし試して見ることにします。
/etc/sshにsshd.configがあります。
AuthorizedKeysFile /data/.ssh/authorized_Keys と記述があるので
公開鍵を/data/.ssh/に作ってやればいいようです。
いつものようにLinuxマシンで作業します。
まずはLinuxマシン上で秘密鍵と公開鍵ペアを生成します。
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hoge/.ssh/id_rsa): /home/hoge/id_rsa
Enter passphrase (empty for no passphrase): ←公開鍵のパスワードを設定します
Enter same passphrase again:
Your identification has been saved in /home/hoge/id_rsa.
Your public key has been saved in /home/hoge/id_rsa.pub.
The key fingerprint is:
13:81:d4:59:b2:48:b2:16:ec:45:5f:5e:06:0e:e8:83 hoge@hoge
The key's randomart image is:
+--[ RSA 2048]----+
本来なら/home/hoge/.sshに作るのですが、既に別のサーバーへのキーが存在してるので
/home/hoge/に作成しました。
$ chmod 600 /home/hoge/id_rsa ←秘密鍵のパーミッションを600に変更しておきます。
公開鍵/home/hoge/id_rsa.pubをSC03Eに送り込みます。
$ adb push /home/hoge/id_rsa.pub /sdcard/
./sshデイレクトリーを作成して、公開鍵をauthorized_keysとして書き込みます。
$ adb shell
shell@android:/ $ su -
root@android:/ # mkdir /data/.ssh/
root@android:/ # cat /sdcard/id_rsa.pub >> /data/.ssh/authorized_keys
root@android:/ # chmod 600 /data/.ssh/authorized_keys
sshdを起動
root@android:/ # start sshd
PCからアクセスしてみます
$ ssh -i /home/hoge/id_rsa root@SC03EのIPアドレス
Enter passphrase for key '/home/hoge/id_rsa': ←公開鍵のパスワードを入れます
void endpwent()(3) is not implemented on Android
root@android:/ # ←rootでログインできました。
次にFilezillaを使ってSC03Eにアクセスするけどうまく行きませんけど・・・
Error: Connection closed by server with exitcode 127
sshdは動いているのにsftpがうまく起動してないようです。
sshd.configを確認すると
Subsystem sftp /usr/libexec/sftp-server となってsftpのパスが違っています。
こいつをコメントアウトして
Subsystem sftp internal-sftpを書き加えます。
sshdを再起動
root@android:/ # restart sshd
FilezillaでアクセスするとPCから/以下のファイルをやり取りできるようになりました。
CWMのバックアップもPCに簡単に移動できるようになりました。
sshdサーバーの起動はターミナルエミュレーターから
$ su
# start sshd
終了はsshの画面から
# stop sshd
でOK
これでUSBデバックケーブルとadbを使用しなくても端末が弄れるようになりました。
コメントをどうぞ