bluewindからputtyで一発でサーバにログインする方法・後編

前回の後編ということで、公開鍵、秘密鍵の作成とputty agentを使って今度こそ、一発でサーバにログインする方法を書きます。

公開鍵、秘密鍵の作成

作成方法は何種類かあるようですが、今回はputtygen.exeを使用して作成しました。

ダウンロード

こちらからダウンロードしてきて、適当な場所に置きます。

公開鍵、秘密鍵の作成

puttygen.exeを起動し、Generateボタンをクリックします。
乱数を発生させるために、ウィンドウ内でマウスを動かします。



Key passphrase と Comfirm passphrase にパスフレーズを入力します。




パスフレーズ認証についてはこちらが参考になりました。

パスフレーズ認証の大まかな流れを見ておきます。

hogeが遠く離れたサーバー(以下sv:serverの意味ね)にリモートログインをする場合を考えます。 hoge :「俺はhogeだ、接続したい!」、sv:「合い言葉は?」hogeはパスワードをネットワークを介して送信します。svはPAM認証システムをつかってhogeが本物かどうかCheckします。

ここに2つの問題があります。 ネットワークをパスワードが流れる事で誰かに見破られる可能性があること、そして、hogeと名乗った誰か他人が、hogeのふりをして接続しようとし、パスワードを聞かれるたびにchange&challengeをできてしまう事です。 hogeの最初の一言「俺はhogeだ」には全く信用が無いのです。そこでパスフレーズ認証が登場です。

パスフレーズ認証では、Gnupgpgpのような公開鍵、秘密鍵をつかって認証するしくみです。まず、下準備として、接続先には、自分の公開鍵user_key.pub がauthorized_keys2というファイルの中に入ってないといけません。で、認証の流れは、まずhogeは自分のPCからsshdサーバに、ユーザ名hoge(指定がなければ、ユーザ名の指定は-l 'user'でする)接続を試みます。もし、初回だけ、サーバからhost_key.pubが提供され、それは自分のPCの~ /.ssh/known_hostsに追加されます。サーバーはhogeの接続要求を受けました。(さて、ここからが本番です)がしかし、サーバは、 hogeに対してパスワードを聞きません、そのかわり、random number generatorによって作り出した、乱数列を、サーバ側にあるuser_key.pub(下準備したヤツ)で暗号化し、その暗号化したやつを、hogeに対して「おい、この暗号文をといてみろ」と投げるのです。hogeが本人でかつ、本人のPCであれば、 暗号文を、自分の秘密鍵user_key.secと、自分のパスフレーズで解く事ができ、その答えをネットワークを介して、「これでどうだ」とサーバへ返すのです。サーバーは暗号化する前の数字列と、hogeが送ってきた答えを見て、答え合わせをして、正解なら、認証するわけです。おーすごい。頭いいなぁ。

http://www.c.csce.kyushu-u.ac.jp/kb/wiki/index.php?ssh%20%A4%C7%A5%D1%A5%B9%A5%D5%A5%EC%A1%BC%A5%BA%C7%A7%BE%DA


Save private keyボタンをクリックし秘密鍵を保存します。
(今回はid_rsa_putty.ppkというファイル名で保存しました)


Public key for pasting into OpenSSH authorized_keys file に記述してある文字をコピーし、公開鍵として適当なファイル名で保存します。
(今回はid_rsa_putty.pubというファイル名で保存しました)


以上で公開鍵、秘密鍵の作成は終わりです。

sshサーバの設定

公開鍵の格納ディレクトリを作成、パーミッションを700にします。

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh

作成した、公開鍵をsshサーバへアップロードします。
今回は、WinSCPを使用し~/.sshへアップロードしました。


アップロードした、id_rsa_putty.pubからauthorized_keysを作成します。

$ cat ~/.ssh/id_rsa_putty.pub >> ~/.ssh/authorized_keys


公開鍵認証を使えるように、sshd_configを設定します。
/etc/ssh/sshd_config

RSAAuthentication yes ←公開鍵認証を許可(バージョン1用)
PubkeyAuthentication yes ←公開鍵認証を許可(バージョン2用)
PasswordAuthentication no ←パスワード認証を不許可
ChallengeResponseAuthentication no ←これも不許可

puttyの設定

Connection->DataのAuto-login usernameにログインユーザ名を入力します。

Connection->SSH->AuthのPrivate key file for authenticationに作成した秘密鍵のパスを設定します。

putty agentを使ってパスフレーズを自動入力

putty agentを使用すると、パスフレーズの入力を自動で行ってくれます。

ダウンロード

pagent.extをこちらからダウンロードしてきて、適当な場所に置きます。

pagentの設定

pagentはタスクトレイに常駐するので、アイコンをクリックし設定画面を起動します。



Add Key ボタンをクリックし秘密鍵パスフレーズを設定すれば終了です。

bluewindから起動してみる。



おー、すげー。