第5回 PuTTYでSSH2接続
PuTTYでサーバにアセクスする(パスフレーズ認証)
「PuTTYでサーバにアセクスする(パスワード認証)」のところで、パスワード認証でSSH経由でアクセスする手順をご紹介しました。
しかし所詮はパスワードです。
銀行でキャッシュカードの暗証番号を盗み見られて、多額の預金を引き下ろされてしまった……という事件があったのは記憶に新しいところだと思います。サーバへのログインもそれと同じでいくら通信が暗合化されているからといって、パスワードを毎回入力していては万が一パスワードを入力するところを盗み見られてはおしまいます。
そこでここではパスワード認証からもう一歩進んで、公開鍵と秘密鍵を使ったパスフレーズ認証を行う方法を紹介します。
パスフレーズ認証を行うには「秘密鍵」と「公開鍵」という一対の"鍵"を作ります。秘密鍵とは"秘密"という名の通り誰にも渡してはいけません。秘密鍵は人知れず耐火金庫の……(以下略)
秘密鍵、公開鍵方式を使うとサーバとの間でやりとりするデータは公開鍵で暗号化され、秘密鍵で複合化されるようになります。ネットワークにはこれまで同様に暗号化されたデータが流れます。
なんだかやれ公開鍵だ、やれ暗号化だなどと言われると何やら難しく感じますが、鍵と言っても中身は記号の羅列が書かれたテキストファイルです。
手順通りにやれば意外と簡単に設定できてしまいます。
操作手順は次のような感じになります。
- 秘密鍵と公開鍵の作成(サーバ)
- サーバ側で秘密鍵と公開鍵を作成します。コマンド一発で作れます。
- 秘密鍵をWindows側に持ってくる(サーバ、Windows)
- 秘密鍵ファイルをWindows側に持ってきます。でもどうやって?
- 公開鍵の登録(サーバ)
- サーバに公開鍵を登録します。ファイルをコピーするだけです。
- 秘密鍵の登録(Windows)
- PuTTYで使えるように秘密鍵を生成します。便利なツールがございます。
- 動作確認
- パスフレーズ認証でログインできるか試します。
パスフレーズ認証の設定
秘密鍵と公開鍵の作成(サーバ)
始まりはいつもの通りPuTTYでパスワード認証を使ってサーバにログインします(fig 4.8を参照)。
秘密鍵と公開鍵を作成するにはssh-keygenコマンドを使います。
コマンドを実行すると下のように「秘密鍵と公開鍵ファイルをどこに作成するか?」と聞かれますが、ここはそのまま[Enter]キーを押します。
Enter file in which to save the key (/home/hoge/.ssh/id_dsa):
続いてパスフレーズの設定をします。
ここで入力したパスフレーズはログインするときのパスワードの代わりになります。入力したパスフレーズはログイン時に毎回使います。
結局好きなフレーズを入力すればよいのですが、パスワードと同じなのは避けることをオススメします。何のためにパスフレーズを設定するのかわかりませんし。
ここでは、
Enter passphrase (empty for no passphrase):nagisatanmoe,honokatanmoe
というパスフレーズを設定しました。
なんことかわからないおともだちは日曜日早起きしてテレビ見てね。
ちなみに入力したパスフレーズは表示されません。
続いてパスフレーズの再入力を求められるので、先ほどと同じパスフレーズを入力します。
※入力したパスフレーズは表示されません。
すると次のようなメッセージが表示され、これで秘密鍵と公開鍵の作成は終了です。
Your public key has been saved in /home/hoge/.ssh/id_dsa.pub.
The key fingerprint is:
60:4f:fc:42:90:7e:81:f1:ae:06:3b:fd:9e:50:c6:5a hoge@navilab
では本当に秘密鍵と公開鍵が作成されたのか確認してみます。
秘密鍵と公開鍵はホームディレクトリ(ログインしたときに最初にいるディレクトリです。ユーザ"hoge"でログインすれば/home/hogeがホームディレクトリになります)の.sshディレクトリ以下に作成されています。
次のコマンドを入力してファイルの一覧を表示します。
$ls -al
id_dsaというファイルが秘密鍵。id_dsa.pubというファイルが公開鍵になります。
前にも書きましたが鍵はテキストファイルなので中を見ることができます。
次のコマンドを入力して、id_dsa.pubとid_dsaファイルの中身を確認してみます。
公開鍵の中身の確認です。
秘密鍵の中身の確認です。
秘密鍵をWindows側に持ってくる(サーバ&Windows)
公開鍵(id_dsa.pubファイル)はそのままサーバに置いておきますが、秘密鍵(id_dsaファイル)はWindowsのPCに持ってこないといけません。
どうやってファイルをサーバからWindows側に持ってくる?と悩んでしまいそうですが、もう面倒臭いので秘密鍵の中身をコピー&ペーストで持ってくることにしましょう(←いいのか?)。
手順は簡単です。
秘密鍵の内容をPuTTYに表示(fig 4.12)させて、"-----BEGIN DSA PRIVATE KEY-----"と書かれている行から"-----END DSA PRIVATE KEY-----"と書かれている行までコピーしてWindowsのメモ帳に貼り付けるだけ。
メモ帳に貼り付けた秘密鍵ファイルは適当なファイル名を付けて保存します。ここでは"secretkey_hoge.txt"というファイル名で保存しました。
公開鍵の登録(サーバ)
秘密鍵と公開鍵を作成しただけでは、サーバはどの公開鍵を使ってよいかわかりません。そこでサーバに使う公開鍵を登録します。
サーバはユーザのホームディレクトリの.sshフォルダ以下にある"authorized_keys"というファイル名を公開鍵として使うようになっています。
つまり作成した公開鍵(id_dsa.pubファイル)が"authorized_keys"というファイル名であればよいわけです。
早速、id_dsa.pubファイルをauthorized_keysというファイル名でコピーしてみます。
念のためにauthorized_keysファイルが作成されているかlsコマンドで確認してみます。
どうやら作成されているようです。
秘密鍵の登録(Windows)
次にサーバで作成した秘密鍵をPuTTYで使えるようにします。
秘密鍵をPuTTYで使えるようにするには"PuTTY key Generator"というソフトを使います。
PuTTYの公式サイトのダウンロードから"For Windows 95, 98, ME, NT, 2000 and XP on Intel x86"という項目にあるputtygen.exeファイルをダウンロードします。
入手したputtygen.exeはPuTTY(ファイル名puttyjp.exe)と同じフォルダに置いておきます。別の場所でも問題ありません(ここではD:\Tools\puttyフォルダ以下に置きました)。
puttygen.exeをクリックしてPuTTY key Generatorを起動します。
Type of key to generate:の項目をSSH-2 DSA(fig 4.16の(1)の部分)に設定し、Loadボタン(fig 4.16の(2)の部分)を押します。そしてメモ帳で保存した秘密鍵ファイルを選択します(ここでは"secretkey_hoge.txt"を選択)。
すると次のような画面(fig 4.17)が表示されパスフレーズの入力を求められますので、鍵を作成するときに設定したパスフレーズ"nagisatanmoe,honokatanmoe"を入力します。
正しいパスフレーズを入力すれば、鍵の生成に成功したというメッセージが表示されるので、そのままOKボタンを押します。
生成に成功した後は上のように鍵情報が満載された表示(fig 4.18)になります。
これらの情報はSave private keyボタン(fig 4.18の(1)の部分)を押し、適当なファイル名で保存します(ここでは"key_hoge.ppk"というファイル名にしました)。
次からPuTTYでサーバに接続するときには、このファイルを使います。
PuTTY key Generatorはもう使わないので、ソフトを終了してさよならします。
動作確認
これまで長々と設定してきましたが、これでパスフレーズ認証のための設定は全て終了です。
さっそくパスフレーズ認証でログインしてみましょう。
いつものようにPuTTY(ファイル名puttyjp.exe)を起動します。
PuTTYの設定画面でカテゴリ:SSH-認証(fig 4.19の(1)の部分)を選択し、認証パラメータの参照ボタン(fig 4.19の(2)の部分)を押し、生成した秘密鍵ファイル(ここでは"key_hoge.ppk")を選択します。あとの設定はパスワード認証のときと同じです。
開くボタンを押すとパスワード認証のときと同じように「login as:」と入力待ち状態になっているので、ユーザ名"hoge"を入力します。
続いて以下のように表示されパスフレーズの入力を求められますので、パスフレーズ"nagisatanmoe,honokatanmoe"を入力します。
Passphrase for key "imported-openssh-key":nagisatanmoe,honokatanmoe
※入力したパスフレーズは表示されません。
パスフレーズを間違えると"Wrong passphrase"と表示され再入力を求められますが、正しく入力すればログインできるはずです。