Windowsから公開鍵認証でSSH2サーバにログインする(PuTTY編):Tech TIPS
多くのレンタルサーバでは、設定やメンテナンスのためにSSH2サーバに接続する必要がある。SSH2サーバでは公開鍵認証が推奨されることが多い。PuTTY ごった煮を利用すれば、Windows OSでも公開鍵/秘密鍵の生成と認証が可能だ。
対象OS:Windows 2000/Windows XP/Windows Vista/Windows 7/Windows Server 2003/Windows Server 2008/Windows Server 2008 R2
解説
レンタルサーバやUNIX/Linux/FreeBSDベースのサーバでは、各種設定やメンテナンスにSSH2サーバが使われていることが多い。しかしWindows OSはSSH2サーバに接続する機能を持っていない。
そこでTIPS「Windowsでsshクライアント「PuTTY」を使う」では、Windows用SSH2クライアントソフトウェアの1つ「PuTTY」を使って、Windows OSからSSH2サーバに接続する手順を説明した。
このTIPSでは、サーバの初期セットアップ時によく利用されるパスワード認証を例に取り上げた。しかしSSH2は、この他の認証方式もサポートしており、公開鍵暗号もその1つに挙げられる。
公開鍵暗号は、ユーザーごとに作成した公開鍵と秘密鍵をそれぞれサーバとクライアントに配置して認証および暗号化/復号に利用する方式で、パスワード認証に比べて突破されにくく安全とされる。そのため、実際にSSH2サーバでは公開鍵認証がよく利用されている。
PuTTYも公開鍵認証をサポートしている。そこで本TIPSでは、PuTTYでSSH2の公開鍵認証を実現するために、鍵の生成と配置、認証(ログイン)までの手順を説明する。
PuTTY日本語版には複数のバージョンがある。以下では、蛭子屋双六氏の「PuTTY ごった煮」を例に挙げている。
操作方法
以下では、新たに公開鍵/秘密鍵のペアを作成するという前提で説明する。既存の公開鍵/秘密鍵を流用する場合の手順や注意点については、別途解説したい。
また、PuTTYは既にインストールしてあるものとする。インストール手順や最初のセットアップについては、別のバージョンではあるが、TIPS「Windowsでsshクライアント「PuTTY」を使う」が参考になるだろう。
●PuTTYgenで公開鍵/秘密鍵を生成する
まずは認証に用いる公開鍵と秘密鍵のペアを作成する。それには、スタートボタンから[すべてのプログラム]−[PuTTY ごった煮]−[PuTTYgen]をクリックする。
「PuTTY 鍵生成」というダイアログが表示されたら、[生成]ボタンをクリックしてから[鍵]の枠内にマウスカーソルを載せ、プログレスバーが右端に到達するまでマウスカーソルを動かし続ける。この操作により乱数が発生し、ユニークな鍵のペアが生成される。なお、[パラメータ]はデフォルトのままでよい。
PuTTYgenで公開鍵/秘密鍵を生成する
スタートボタンから[すべてのプログラム]−[PuTTY ごった煮]−[PuTTYgen]をクリックすると、このダイアログが表示される。PuTTYgenは鍵の生成や変換を担うプログラムだ。
(1)これを選ぶ(デフォルトでこれが選択されているはずだ)。
(2)サーバ管理者やサービス提供者から特に指定がなければ、デフォルトの1024bitのままでよい。
(3)これをクリックすると、鍵の生成が始まる。(4)へ進む。
(4)プログレスバーが右端に到達するまで、バーの下の何もない領域内でマウスカーソルを動かし続ける。これにより乱数が発生して、ユニークな鍵のペアが生成される。
プログレスバーが右端に到達すると鍵の生成が完了し、バーの代わりに公開鍵の内容が表示される。
次はパスフレーズと鍵のコメントを指定する。パスフレーズはパスワードの代わりになるもので、ログイン時に入力する必要がある。覚えやすい英単語と記号、スペースなどを使って数十文字の長さの文字列を指定すること(長いほど突破されにくく安全)。もちろんパスフレーズを忘れるとログインできなくなる(一緒に生成した秘密鍵が使えなくなる)ので注意する。
コメントは鍵(公開鍵と秘密鍵の両方)のファイルに書き込まれるため、その鍵の目的などを記しておくと鍵の管理に役立つ(何の鍵か分からなくなったときの手かがりになったりする)。
鍵のパスフレーズとコメントを指定する
鍵の生成が終わったら、あとでログインするときに入力するパスフレーズと、鍵の目的などを表すコメントを指定する。
(1)コメントはデフォルトで、鍵の種類(「rsa-key」の部分)と生成年月日(「-20100701」の部分)が指定される。これは公開鍵と秘密鍵の両方に付加されるので、鍵の目的が分かるような情報を付加すると、あとで管理するのに役立つ。
(2)パスフレーズを入力する。覚えやすい英単語と記号、スペースなどを使って数十文字の長さの文字列を指定するのが一般的だ。忘れるとログインできなくなるので、長くても覚えやすい文字列が望ましい。
(3)確認のため、(2)と同じパスフレーズを指定する。
●公開鍵/秘密鍵をファイルに保存する
次は、公開鍵/秘密鍵をファイルに保存する:
- 公開鍵(OpenSSH用): [OpenSSHのauthorized_keysファイルにペーストするための公開鍵]枠の文字列を全て選択してコピーし、メモ帳などにペーストして「autorized_keys.txt」といったファイル名で保存
- 公開鍵(製品版SSH用): [公開鍵の保存]ボタンをクリックして「id_rsa.pub」といったファイル名で保存
- 秘密鍵: [秘密鍵の保存]ボタンをクリックして「id_rsa.ppk」といったファイル名で保存(クライアント側に保存したままログイン時に使用する)
公開鍵はSSH2サーバの実装によって形式が異なるため、このように2つ保存しておき、あとでサーバに合わせてどちらかを選んで配置する必要がある。また秘密鍵は漏れないように、自分しかアクセスできないフォルダに保存するなど、厳重に管理すること。
公開鍵/秘密鍵をファイルに保存する
コメントとパスフレーズを指定してから、次の手順で鍵を保存する。(1)(2)は公開鍵で、この後にサーバへ転送する。(3)は秘密鍵で、クライアントに保存したまま利用する。
(1)この中の文字列を全て選択してコピーし、メモ帳などのテキストエディタにペースト後、「authorized_keys.txt」といったファイル名で保存する。これはOpenSSHと呼ばれるSSH2サーバで使用する。
(2)これをクリックして「id_rsa.pub」といったファイル名で保存する。これは製品版SSHあるいは商用SSHと呼ばれるSSH2サーバで使用する。
(3)これをクリックして「id_rsa.ppk」といったファイル名で秘密鍵を保存する。これは漏らさないように、自分しかアクセスできないように制限したフォルダに保存するなど、厳重に管理する。
これで鍵の生成と保存は完了なので、PuTTYgenを終了する。
● 公開鍵をサーバに配置する
次は、保存した公開鍵をサーバに転送して認証に利用できるようにする。ただし、鍵のファイルをサーバに転送する方法は、FTPを使ったり、管理者に依頼して保存してもらったりなど、サーバごとに異なるので、サーバ管理者に確認していただきたい。
以下では、SSH2サーバの種類に応じて、どの公開鍵ファイルをどこに配置すればよいのか説明する。
■SSH2サーバがOpenSSHの場合
- 公開鍵ファイル: authorized_keys.txt
- サーバでの保存先ファイル名: ~/.ssh/authorized_keys
「~/」はホームディレクトリを表す。またOpenSSHの設定によってはファイル名を「authorized_keys2」にしなければならない場合もある。サーバ管理者に確認していただきたい。
■SSH2サーバが製品版SSHの場合
- 公開鍵ファイル: id_rsa.pub
- サーバでの保存先ファイル名: ~/.ssh2/authorization
どちらの場合も、公開鍵ファイルの保存時に改行コードをサーバに合わせて変更する必要がある。Windowsでの改行コードは「CR(0x0D)+LF(0x0A)」だが、UNIX/Linux/FreeBSDのサーバは一般的に「LF(0x0A)」のみなので、「CR+LF」のままサーバに保存すると改行が正しく認識されず、誤動作を引き起こすことがある。
変換する方法はいくつかあるが、FTPで転送するならテキストモードでputすればよいし、nkfというコマンドが利用できるなら、次のコマンドラインで変換できる。
nkf -Lu <Windowsで生成した公開鍵ファイル> > <保存先ファイル>
改行コードの詳細については、TIPS「テキストファイルの行末コードを変更する」を参照していただきたい。
また、公開鍵ファイルおよびその保存先ディレクトリは、他人がアクセスできないようにして保護するのが望ましい。それにはchmodというコマンドを次のように実行する。
chmod 700 <保存先ディレクトリ>
chmod 600 <保存先ファイル>
以上で公開鍵認証の準備は完了だ。
● PuTTYから公開鍵認証でログインする
スタートボタンから[すべてのプログラム]−[PuTTY ごった煮]−[PuTTY]をクリックしてPuTTYを起動したら、まずはパスワード認証時と同様に、ダイアログの左側ツリーから[セッション]を選んでホスト名とポート番号、接続タイプを指定する。
次に、左側ツリーから[接続]−[SSH]−[認証]を選び、[認証のためのプライベートキーファイル]に秘密鍵のファイルパスを指定し、[開く]ボタンをクリックする。
公開鍵認証時のPuTTYの設定(その1)
パスワード認証の場合と同じくサーバ(ホスト)を指定する。
(1)これを選択する。
(2)接続先サーバのホスト名またはIPアドレスを入力する。
(3)接続先サーバの待ち受けポート番号。通常はSSH2のデフォルトである22番ポートのままにしておく。
(4)接続先サーバのタイプ。デフォルトの「SSH」のままにしておく。
公開鍵認証時のPuTTYの設定(その2)
上記に加えて、秘密鍵ファイルの指定も必要だ。
(5)(2)〜(4)の設定後、これを選ぶ。
(6)PuTTYgenで保存した秘密鍵ファイルを指定する。
(7)これをクリックするとサーバへの接続を始める。→[A]へ
サーバへの接続が始まるとターミナルウィンドウが表示されるので、ユーザーIDとパスフレーズ(パスワードではない)を入力し、ログインに成功することを確認する。
[A]
公開鍵認証時のターミナルウィンドウ
SSH2サーバとの接続が始まると、このログインメッセージが表示されるので、ユーザーIDとパスフレーズでログインできるか確認する。
(1)ユーザーIDを入力して[Enter]キーを押す。
(2)公開鍵認証を表す「Authenticating with public key 〜」というメッセージが表示される。
(3)PuTTYgenで指定したパスフレーズを入力して[Enter]キーを押す。パスワードではないので注意。
(4)ログインが成功した結果、表示されたメッセージ。この内容は接続先のサーバによって異なる。
PuTTYを終了するには、上記のターミナルウィンドウで「exit」と入力・実行する。
Copyright© Digital Advantage Corp. All Rights Reserved.