sshについて
sshはリモートサーバにアクセスする際に、
そのネットワーク通信の内容を暗号化するための通信プログラムです。
サーバ側にはsshサーバ、
クライアント側にはsshクライアントが必要になります。
sshクライアントを使えば、
例えばsshサーバが動いているLinuxサーバに接続し、
通信内容を見られることなくサーバに命令を送ることができます。
このページでは、1998年より開発されているWindows用のsshクライアントPuTTYについて説明します。
ほかに、マイクロソフトによって移植された
Windows用のopensshもあります。
PuTTYの入手
PuTTY のダウンロードサイトから、putty.zipを入手します。
Checksumsを使うと putty.zip が正規のファイルであるか確認できます。
putty.zip の SHA-1 や SHA-256 を
7-zipなどのツールで計算し、
その値がサイトの値と一致していれば正規のファイルと考えられます。
sshでのログイン方法
sshでは、次の2つのログイン方法が利用できます。
ユーザ名、個人識別キーを使用してログイン(推奨)
ユーザ名、パスワードを入力してログイン
個人識別キーとは、クライアントで生成された2つの対になる鍵(パブリック鍵、プライベート鍵)のことです。
個人識別キーを使うと、対になる鍵をそろえた時にだけsshサーバに接続できます。
また、パスワードと比べ、プライベート鍵の推測は非常に難しいとされています。
インターネットにはsshサーバを狙ってくる人が多いため、
sshサーバをパスワードで接続できる状態にしておくと乗っ取られてしまうかもしれません。
sshサーバを管理する際は、できれば個人識別キーを必須としておくと良いでしょう。
個人識別キーを使うには、sshサーバに鍵の片割れであるパブリック鍵を予め登録しておき、
sshサーバに接続するときにはクライアント側でプライベート鍵を使います。
個人識別キーの生成
sshサーバに個人識別キーを使って接続するために、
クライアント側で2つの鍵(パブリック鍵、プライベート鍵)を生成します。
PuTTYでは、puttygenというプログラムを使います。
puttygenは2つの鍵を生成するGUIプログラムです。
プログラムを起動したら、下部のParametersにSSH-2 RSA、4096ビット以上の値を入力してGenerateを押します。
2つの鍵を生成するためには、推測が難しい数(ランダムな数)を必要とします。
puttygenはランダムな数として、ユーザのマウス移動パターンを利用するようです。
進捗バーがマックスになるまで、マウスを移動させ続けてみてください。
進捗バーがマックスになった時点で、パブリック鍵とプライベート鍵は完成します。
パブリック鍵はそのまま保存して使うものです。
Save public key ボタンを押してパブリック鍵を保存しておきます。
プライベート鍵については、そのまま保存するとプライベート鍵を盗んだ人がsshサーバに接続できることになります。
そこで、最後の砦としてプライベート鍵をパスワードで暗号化します。
このパスワードは「passphrase」と呼ばれています。
passphraseはsshサーバのパスワードとは関係ありません。
別のパスワードを利用することが望ましいでしょう。
プライベート鍵をファイルに保存するには、
passphraseを2回入力した後で Save private key ボタンを押します。
パブリック鍵のサーバ登録
先ほど保存した2つの鍵のうち、パブリック鍵を次の手順でsshサーバに登録します。
(プライベート鍵を登録してはいけません。)
PuTTYのキーはopenssh serverで扱うキーとファイルフォーマットが少し違うため、
openssh付属のプログラムで変換してから使います。
PuTTY が生成したファイルをそのままコピーすると server refused our key などのエラーになります。
予め、パブリック鍵をsshサーバに何らかの方法でコピーしておきます。
(USBメディア等でコピーする、最初はパスワードでsshを利用するなど)
以下の説明では、コピーされたファイルを~/puttykey.pubとしています。
その後、sshサーバにつなげるユーザでログインした状態で次のコマンドを実行します。
% cd .ssh
% ssh-keygen -i -f ~/puttykey.pub >> authorized_keys
% rm ~/puttykey.pub
例えばクライアントPCが盗難にあうなど、
プライベート鍵が盗まれた可能性がある場合は、
authorized_keysを削除して、個人識別キーの生成からやりなおすと良いでしょう。
なお、同じパブリック鍵を複数のsshサーバに登録すれば、
1つのプライベート鍵でそれらすべてにログインできるようになります。
プライベート鍵でのログイン
PuTTY側で、sshのAuthというカテゴリでプライベート鍵を指定しておくことで、
パブリック鍵を登録したsshサーバに接続できるようになります。
sshサーバに接続しようとすると、
プライベート鍵の暗号化を一時的に解除するためにpassphraseを聞かれます。
passphraseを入力すると、sshサーバに接続できます。
なお、passphraseはsshサーバとは関係ありません。
sshサーバ側のユーザに対応するパスワードは必要ありません。