その中では,パスワードを用いたユーザ認証によってSSH接続を実現する
設定について記載しましたが,ユーザ認証としてパスワードを利用すると,
などによって,パスワードが第三者によって利用されてしまう「なりすまし」の
危険性を回避することはできません.
そのため,SSHではパスワード認証ではなく,
公開鍵暗号方式を用いた認証による接続が推奨されています.
公開鍵暗号方式とはデータ暗号方式の一つで,ユーザが独自に「公開鍵」と 「秘密鍵」と呼ぶ二つの鍵をペアで作成し,それらの鍵を使ってデータの暗号化/ 復号化を行います.公開鍵は暗号文を作り出す鍵で,通信相手に知らせる鍵として インターネット上でもやりとりできます.また,だれでもこの公開鍵で暗号文を 作成でき,鍵を公開している人に送ることができます.一方,暗号文の受け手は 公開鍵とペアになっている本人だけが分かるように厳重に管理された 秘密鍵で復号します.暗号化と復号化を同じ鍵で行う共通鍵暗号方式に比べて, 公開鍵の共有が容易なことや相手の数に関係なく公開鍵は1つでよいなど, 鍵の管理が容易で安全性が高いとされています.
今回は,PuTTY での鍵交換方式による SSH 接続方法について紹介いたします.
PuTTYで鍵生成を行うプログラムとして, PuTTYgen が付属していますのでこれを利用します.スタートメニューから,
「スタート」--> 「プログラム」--> 「PuTTY」--> 「PuTTYgen」
とたどることにより,PuTTYgen を起動することができ, 図1にあるウインドウが表示されます.
次に, generate ボタンを押して鍵を生成します.
マウスの動きで乱数生成を行いますので,ダイアログ上で適当にマウス
を動かしてください(図2).
パスフレーズを入力したら,作成した鍵を保存します.『Save private key』
(秘密鍵),『Save public key』(公開鍵) を順にクリックしてください.
それぞれファイル名を決めて保存します.
保存先については特に制限はありませんが,本稿では,
C:\Program Files\PuTTY
に,秘密鍵を
id_rsa.ppk,
公開鍵を id_rsa.pub
という名前で保存することにします.
まず,コマンドプロンプトを立ち上げて
(スタートメニューから「プログラム」-> 「アクセサリ」),
以下のコマンドを実行して,pscp.exe
が存在するディレクトリに移動します.
C:\> cd C:\Program\PuTTY
そして,
以下のコマンドで公開鍵をHPC2500(FQDN名:hpc.kudpc.kyoto-u.ac.jp)に転送します.
尚,ここでは ユーザアカウントを user-id としていますが,
各自で使用しているSSH サーバに登録されている自分のアカウント名,
SSH サーバのホスト名に置き換えて下さい.
C:\> pscp id_rsa.pub user-id@hpc.kudpc.kyoto-u.ac.jp:id_rsa.pub
次に,転送した公開鍵をサーバに登録を行うために,HPC2500に
ログインします.ログインは PuTTY を使用して行うことができます.
方法については,
KUINS ニュース No.45 の記事を参考にして下さい.
ログインできましたら,
登録の前に PuTTYgen
で作成した公開鍵を,OpenSSH で使用できるように変換を行う必要があります.
変換方法として,ssh-keygen
コマンドを用います.以下のコマンドを実行して下さい.
% ssh-keygen -i -f id_rsa.pub >> authorized_keys
次に,自分のホームディレクトリに .ssh
というディレクトリが存在することを確認して下さい.
存在しない場合はディレクトリを作成し,またディレクトリのパーミッションを
700にしておきます.
そして,.ssh ディレクトリに移動します.
そのディレクトリに authorized_keys
というファイルが存在していなければ,
さきほど変換して作成したファイルをこのディレクトリに移動させます.
また,authorized_keysのパーミッションを
600にしておきます.
以上の作業を,下記のコマンドを実行することで行えます.
% cd .ssh
authorized_keysが既に存在している場合は,
そのファイルにさきほど変換したファイルの内容を追加して下さい.
あと,転送した公開鍵ファイル(id_rsa.pub)は削除しておいて下さい.
% rm ~/id_rsa.pub
まず,『保存されたセッション』 の欄に既に登録されている中で,
公開鍵を登録したサーバのセッションを選択し,読込ボタンをクリックします.
ここでは,サーバのホスト名と同じ hpc.kudpc.kyoto-u.ac.jp のセッションを
選択しています(図5).
次に,カテゴリの『接続』-> 『SSH』-> 『認証』を選択すると,
図6の画面が表示されます.
その中で『認証パラメータ』の
『認証のためのプライベートキーファイル』で作成した
自分の秘密鍵(id_rsa.ppk)を指定します.
参照ボタンをクリックして,
秘密鍵があるフォルダに移動して,使用する秘密鍵ファイルを選択して下さい.
設定が完了しましたら,『セッション』のカテゴリに移動し,
保存をクリックします.
Authenticating with public key "rsa-key-20041213"
スタートメニューから,Pagent を起動します.
そして,Add Keyをクリックしますと,
『Select Private Key File』のダイアログが立ち上がりますので,
作成している秘密(id_rsa.ppk)
のフォルダに移動して選択します.選択しますと,
『Pagent: Enter Passphrase』のウインドウが表示されて
パスフレーズを聞かれますので,
鍵作成時に設定したパスフレーズを入力して下さい
(図11).
パスフレーズが正しく入力されましたら,
図12のように登録された秘密鍵が表示されます.
登録が確認できましたら,Closeボタンでこのウインドウを閉じて,
完了です.
このように, Pagaent が常駐している状態
(タスクバーにアイコンが表示されている状態)でPuTTYを起動しますと,
パスフレーズを聞かれることなく sshサーバにログインすることが可能です.
但し,Pagentを終了させた場合,
もう一度秘密鍵の登録からやり直すことになります.
パスワードを用いたユーザ認証では,パスワードが何らかの形で第三者に漏れると,
容易にアクセス可能されてしまう事態を避けられませんので,今回紹介した
公開鍵暗号方式での認証への移行をお勧めします.
図1: PuTTYgen の起動画面
図2: 鍵生成(マウスの動きによる乱数作成)
図3: 鍵生成中の画面
図4: パスフレーズの入力,秘密鍵,公開鍵の保存
3. SSHサーバへ公開鍵の登録
次に,作成した公開鍵を接続するSSHサーバに登録を行います
(尚、今回はサーバ側で OpenSSH を用いていると想定しています).
最初に公開鍵を SSH サーバに転送する必要があります.転送方法としては
安全に転送を行うために,SCP,SFTP などを使うことで可能ですが,ここでは
PuTTY に付属されている pscp
コマンドを利用します.本稿では SSH サーバの例として,
メディアセンター北館に設置のスーパーコンピュータ
(以下,HPC2500)を用います.
% mv ../authorized_keys .
% chmod 600 authorized_keys
4. PuTTY での設定
サーバ側での鍵登録が完了しましたら,PuTTY で認証の設定を行います.
スタートメニューから,あるいはデスクトップ上にあるPuTTYのアイコンを
ダブルクリックすることにより,PuTTYの設定のウィンドウを起動します.

図5: PuTTY の設定画面

図6: SSH 認証を管理するオプション
5. SSH サーバへのログイン
設定が完了しましたので,実際にサーバにログインをしてみます.
さきほど保存したセッションを読み込んで,開く
のボタンをクリックします.
図7のような PuTTY のウインドウが表示されます.
パスワード認証の際のログインと異なり,
Passphrase for key "rsa-key-20041213"
図7: PuTTY のウインドウ(パスフレーズ入力を要求)

図8: PuTTY のウインドウ(ログイン完了)
6. Pagent の利用
以上の方法で,PuTTYで鍵交換によってsshサーバにログイン可能になりました.
しかしこの方法においてもログインする度に,
パスフレーズを入力する作業を行う必要があります.
そこで,Pagentを利用することにより,
パスフレーズの入力を省略することができます.
次に,Pagentの利用方法について紹介します.
(「スタート」--> 「プログラム」--> 「PuTTY」--> 「Pagent」とたどれます)
起動しますと,タスクバー(右下)にアイコンが表示されます
(図9).
そのアイコンをダブルクリックすると,図10
のウインドウが表示されます.

図11: パスフレーズの入力

図12: 秘密鍵登録のウインドウ(登録完了)
7. おわりに
本稿では,PuTTYを用いた公開鍵認証に必要な鍵ペア(公開鍵,
秘密鍵)を作成するツール(PuTTYgen)
や公開鍵認証でリモートホストにログインする場合のパスフレーズの入力を省略できる
(Pageant)について紹介しました.