2011年11月17日木曜日

Android端末で秘密鍵公開鍵認証を使ったアクセス

出先で自宅にアクセスする場合は、秘密鍵公開鍵で暗号化経路を使ってアクセスしている。これをAndroid端末からアクセスしたいと思う。
使用するアプリは ConnectBot 、シンプルですがOpenSSH形式の秘密鍵や PortForward もできる優れもの。

現在秘密鍵は TeraTerm で生成した DSAキーを使用している。OpenSSH形式の秘密鍵は TeraTerm で生成できないため、PuTTY を使って秘密鍵と公開鍵を生成し、公開鍵をサーバに追加し、秘密鍵を PuTTY でOpenSSH形式に変換する必要がある。

PuTTY は使用しないので、PuTTY Key Generator (puttygen.exe) だけあればよい。
PuTTY Key Generator (puttygen.exe)はインストール不要で、実行するだけで起動する、起動後まず 鍵の種類を選択し、Genarate を実行。ゲージバーが現れ、マウスを適当に動かすことで処理が完了し、下のような画面が現れる。



Key passphrase を入力し、それぞれの公開鍵と秘密鍵を保存するのだが、ここで注意しなければならないのは、公開鍵の保存について。公開鍵はOpenSSHを使用するので、Public key for pasting into OpenSSH authorized_keys file テキストボックス内の文字列を全て選択コピーし、テキストエディタへ貼り付け、public.pub として公開鍵を保存する必要がある。

また秘密鍵は OpenSSH形式に変換する必要があるので、メニューより Conversions -> Export Open SSH Key を選択し、OpenSSH形式に変換された鍵を保存する。("putty2.open" で保存)

鍵の保存ができたら、まずサーバへ公開鍵を追加する。サーバ上の.ssh フォルダにある authorized_keys に公開鍵が保存されている。公開鍵をサーバへ転送し、下記コマンドで追加することができる。

"cat public.pub >> .ssh/authorized_keys"


追加ができたら、管理者でsshサーバを再起動する.

"/etc/init.d/ssh restart"


これでサーバ側に公開鍵を追加することができた。次は Android端末 GALAXY Tab に OpenSSH形式の秘密鍵 を登録する。
まず何らかの方法で GALAXY Tab に鍵をコピーする、保存先はrootに保存すること。

ConnectBot を起動し、[メニュー] -> [公開鍵管理] -> [メニュー] -> [インポート] でOpenSSH形式の秘密鍵をインポートする。ただしくインポートされれば、下画面のように。


接続は "[username]@接続先:ポート番号" のような記述で設定する、接続先を長押しすると接続先の設定画面が開く。ここでインポートした鍵を設定しておくと便利である。

0 件のコメント: