第5回 PuTTYでSSH2接続

  • PuTTYでSSH2接続(1)
    • Windowsマシンからリモートで操作したい!
    • PuTTYの入手とインストール
    • PuTTYでサーバにアセクスする(パスワード認証)
  • PuTTYでSSH2接続(2)
    • PuTTYでサーバにアセクスする(パスフレーズ認証)
    • パスフレーズ認証の設定
  • PuTTYでSSH2接続(3)
    • 後始末-SSHのセキュリティを高める
    • 役に立つサイト
  • PuTTYでSSH2接続(4)
    • [参考]sshd_configの内容(初期設定)

PuTTYでサーバにアセクスする(パスフレーズ認証)

「PuTTYでサーバにアセクスする(パスワード認証)」のところで、パスワード認証でSSH経由でアクセスする手順をご紹介しました。

しかし所詮はパスワードです。

銀行でキャッシュカードの暗証番号を盗み見られて、多額の預金を引き下ろされてしまった……という事件があったのは記憶に新しいところだと思います。サーバへのログインもそれと同じでいくら通信が暗合化されているからといって、パスワードを毎回入力していては万が一パスワードを入力するところを盗み見られてはおしまいます。

そこでここではパスワード認証からもう一歩進んで、公開鍵と秘密鍵を使ったパスフレーズ認証を行う方法を紹介します。

パスフレーズ認証を行うには「秘密鍵」と「公開鍵」という一対の"鍵"を作ります。秘密鍵とは"秘密"という名の通り誰にも渡してはいけません。秘密鍵は人知れず耐火金庫の……(以下略)

秘密鍵、公開鍵方式を使うとサーバとの間でやりとりするデータは公開鍵で暗号化され、秘密鍵で複合化されるようになります。ネットワークにはこれまで同様に暗号化されたデータが流れます。

秘密鍵・公開鍵のイメージ
fig 4.9 秘密鍵・公開鍵方式のイメージ

なんだかやれ公開鍵だ、やれ暗号化だなどと言われると何やら難しく感じますが、鍵と言っても中身は記号の羅列が書かれたテキストファイルです。

手順通りにやれば意外と簡単に設定できてしまいます。

操作手順は次のような感じになります。

秘密鍵と公開鍵の作成(サーバ)
サーバ側で秘密鍵と公開鍵を作成します。コマンド一発で作れます。
秘密鍵をWindows側に持ってくる(サーバ、Windows)
秘密鍵ファイルをWindows側に持ってきます。でもどうやって?
公開鍵の登録(サーバ)
サーバに公開鍵を登録します。ファイルをコピーするだけです。
秘密鍵の登録(Windows)
PuTTYで使えるように秘密鍵を生成します。便利なツールがございます。
動作確認
パスフレーズ認証でログインできるか試します。

パスフレーズ認証の設定

秘密鍵と公開鍵の作成(サーバ)

始まりはいつもの通りPuTTYでパスワード認証を使ってサーバにログインします(fig 4.8を参照)。

秘密鍵と公開鍵を作成するにはssh-keygenコマンドを使います。

$ssh-keygen -t dsa

コマンドを実行すると下のように「秘密鍵と公開鍵ファイルをどこに作成するか?」と聞かれますが、ここはそのまま[Enter]キーを押します。

Generating public/private dsa key pair.
Enter file in which to save the key (/home/hoge/.ssh/id_dsa):

続いてパスフレーズの設定をします。

ここで入力したパスフレーズはログインするときのパスワードの代わりになります。入力したパスフレーズはログイン時に毎回使います。

結局好きなフレーズを入力すればよいのですが、パスワードと同じなのは避けることをオススメします。何のためにパスフレーズを設定するのかわかりませんし。

ここでは、

Created directory '/home/hoge/.ssh'.
Enter passphrase (empty for no passphrase):nagisatanmoe,honokatanmoe

というパスフレーズを設定しました。

なんことかわからないおともだちは日曜日早起きしてテレビ見てね。

ちなみに入力したパスフレーズは表示されません。

続いてパスフレーズの再入力を求められるので、先ほどと同じパスフレーズを入力します。

Enter same passphrase again:nagisatanmoe,honokatanmoe

※入力したパスフレーズは表示されません。

すると次のようなメッセージが表示され、これで秘密鍵と公開鍵の作成は終了です。

Your identification has been saved in /home/hoge/.ssh/id_dsa.
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ディレクトリ以下に作成されています。

次のコマンドを入力してファイルの一覧を表示します。

$cd /home/hoge/.ssh
$ls -al

id_dsaというファイルが秘密鍵。id_dsa.pubというファイルが公開鍵になります。

秘密鍵・公開鍵ファイルの確認
fig 4.10 秘密鍵・公開鍵ファイルが作成されている

前にも書きましたが鍵はテキストファイルなので中を見ることができます。

次のコマンドを入力して、id_dsa.pubとid_dsaファイルの中身を確認してみます。

公開鍵の中身の確認です。

$less /home/hoge/.ssh/id_dsa.pub
公開鍵
fig 4.11 公開鍵(ファイル名"id_dsa.pub")の内容

秘密鍵の中身の確認です。

$less /home/hoge/.ssh/id_dsa
秘密鍵
fig 4.12 秘密鍵(ファイル名"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のメモ帳に貼り付けるだけ。

秘密鍵をメモ帳に貼り付ける
fig 4.13 秘密鍵の内容をメモ帳に貼り付ける

メモ帳に貼り付けた秘密鍵ファイルは適当なファイル名を付けて保存します。ここでは"secretkey_hoge.txt"というファイル名で保存しました。

公開鍵の登録(サーバ)

秘密鍵と公開鍵を作成しただけでは、サーバはどの公開鍵を使ってよいかわかりません。そこでサーバに使う公開鍵を登録します。

サーバはユーザのホームディレクトリの.sshフォルダ以下にある"authorized_keys"というファイル名を公開鍵として使うようになっています。

つまり作成した公開鍵(id_dsa.pubファイル)が"authorized_keys"というファイル名であればよいわけです。

早速、id_dsa.pubファイルをauthorized_keysというファイル名でコピーしてみます。

$cp /home/hoge/.ssh/id_dsa.pub /home/hoge/.ssh/authorized_keys

念のためにauthorized_keysファイルが作成されているかlsコマンドで確認してみます。

authorized_keysファイルの確認
fig 4.14 authorized_keysファイルが作成されている

どうやら作成されているようです。

秘密鍵の登録(Windows)

次にサーバで作成した秘密鍵をPuTTYで使えるようにします。

秘密鍵をPuTTYで使えるようにするには"PuTTY key Generator"というソフトを使います。

PuTTYの公式サイトのダウンロードから"For Windows 95, 98, ME, NT, 2000 and XP on Intel x86"という項目にあるputtygen.exeファイルをダウンロードします。

puttygen.exeの入手
fig 4.15 puttygen.exeをダウンロード(2005/12/10現在)

入手したputtygen.exeはPuTTY(ファイル名puttyjp.exe)と同じフォルダに置いておきます。別の場所でも問題ありません(ここではD:\Tools\puttyフォルダ以下に置きました)。

puttygen.exeをクリックしてPuTTY key Generatorを起動します。

PuTTY key Generator
fig 4.16 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"を入力します。

PuTTY key Generator
fig 4.17 パスフレーズ入力画面

正しいパスフレーズを入力すれば、鍵の生成に成功したというメッセージが表示されるので、そのままOKボタンを押します。

PuTTY key Generator
fig 4.18 鍵の生成に成功した

生成に成功した後は上のように鍵情報が満載された表示(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")を選択します。あとの設定はパスワード認証のときと同じです。

PuTTY設定画面
fig 4.19 PuTTYの設定画面で使用する秘密鍵を選択

開くボタンを押すとパスワード認証のときと同じように「login as:」と入力待ち状態になっているので、ユーザ名"hoge"を入力します。

login as:hoge

続いて以下のように表示されパスフレーズの入力を求められますので、パスフレーズ"nagisatanmoe,honokatanmoe"を入力します。

Authenticating with public key "imported-openssh-key"
Passphrase for key "imported-openssh-key":nagisatanmoe,honokatanmoe

※入力したパスフレーズは表示されません。

パスフレーズを間違えると"Wrong passphrase"と表示され再入力を求められますが、正しく入力すればログインできるはずです。