Putty による鍵交換による SSH 接続

手順の概要

  1. 秘密鍵と公開鍵の生成
  2. 秘密鍵と公開鍵の保存
  3. 公開鍵をサーバー側への転送
  4. 公開鍵をサーバー側へ登録

1. PuTTY における SSH 鍵生成

putty.exe と同じフォルダにある puttygen.exe を起動する。

起動したら、Parameters にある「SSH-2 RSA」か「SSH-2 DSA」を選択する。SSH-1 には脆弱性があるため、「SSH-1 (RSA)」は選択しないこと。「Number of bits in a generated key:」は「1024」のままでよい。

項目を設定したら、「Generate」ボタンを押す。「Key」のプログレスバーの下にあるスペースで、マウスをグリグリして秘密鍵と公開鍵を生成する。

2. 秘密鍵と公開鍵を保存する

秘密鍵と公開鍵の生成が完了したら、「Key passphrase:」と「Confirm passphrase:」にパスワードを入力する。「Key Comment:」にどのパソコンで生成した秘密鍵と公開鍵がわかるように、半角英数字でコメントを入力する。

「Actions」にある「Save public key」ボタンを押して、公開鍵を保存する。ファイル名は暗号方式の「RSA」か「DSA」のどちらで生成されたものかわかりやすいように、「id_rsa.pub」や「id_dsa.pub」で保存すると良い。保存場所は任意だが「C:\Documents and Settings\UserName\Application Data\Putty」に保存すると、あとあと探しやすいと思われる。
次に「Save private key」を押して、秘密鍵を公開鍵と同じフォルダに保存する。保存名は公開鍵と同様に暗号方式がわかるようにしておくと良い。「id_rsa.ppk」や「id_dsa.ppk」など。
「Public key for pasting into OpenSSH authorized_keys file:」の文字列は、サーバーにログインをするためのファイルに保存する文字列である。この文字列は、公開鍵を用いてサーバー側で生成するか、もしくはそのまま保存して利用できる。

3. 公開鍵をサーバーに登録する

ローカルで生成した公開鍵を用いて、サーバーに公開鍵を登録するために下記を実施する。
SFTP で接続できる Filezilla を用いて、公開鍵をサーバーに転送するか、SSH でサーバーにログインをする。
公開鍵を SFTP で転送した場合は、

% ssh-keygen -i -f ./id_rsa.pub >> ~/.ssh/authorized_keys
% chmod 0600 ~/.ssh/authorized_keys

と実行する。もし、SSH でログインをした場合は、

% vi ~/id_rsa.pub

と実行し、公開鍵のデータをテキストエディタで保存し、

% ssh-keygen -i -f ./id_rsa.pub >> ~/.ssh/authorized_keys
% chmod 0600 ~/.ssh/authorized_keys

を実行すれば、サーバーに公開鍵が保存される。もし、ホームディレクトリに .sshディレクトリがない場合は、

% mkdir ~/.ssh
% chmod 0700 ~/.ssh

と実行して、ディレクトリを事前に生成しておく。
「Public key for pasting into OpenSSH authorized_keys file:」の文字列をサーバーに保存する場合は、直接「~/.ssh/authorized_keys」に保存する。

% ssh-keygen -i -f ./id_rsa.pub >> ~/.ssh/authorized_keys

で公開鍵を生成した場合、~/.ssh/authorized_keys を開くことで、~/.ssh/authorized_keys に保存された文字列と「Public key for pasting into OpenSSH authorized_keys file:」の文字列が同じ内容であることが確認できる。

4. 鍵交換による SSH 接続を試す

Putty で鍵交換による SSH 接続をするには、Putty の設定画面にある「Connection > SSH > Auth」画面の「Private key for authentication」で秘密鍵を指定して、SSH の接続を開始する。今回の場合は、「C:\Documents and Settings\UserName\Application Data\Putty」にある秘密鍵「id_rsa.ppk」などになる。


そして、SSH で接続をすると、下図のようなメッセージが表示され、鍵交換による SSH の認証が行われていることがわかる。