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だ」には全く信用が無いのです。そこでパスフレーズ認証が登場です。
パスフレーズ認証では、Gnupgやpgpのような公開鍵、秘密鍵をつかって認証するしくみです。まず、下準備として、接続先には、自分の公開鍵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にします。
作成した、公開鍵をsshサーバへアップロードします。
今回は、WinSCPを使用し~/.sshへアップロードしました。
アップロードした、id_rsa_putty.pubから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に作成した秘密鍵のパスを設定します。