PuTTYgenの利用について

 

ここでは、WinSCP3等で公開鍵認証をするための準備として、PuTTYgenを利用してキーペア(公開鍵、秘密鍵)を作成してみましょう。

PuTTYgenで作成できる鍵の種類は、SSH1用(RSA1)とSSH2用(RSA)およびSSH2用(DSA)です。

 

WinSCP3はSSH2プロトコルに対応しているので、SSH1より安全なSSH2(RSA、DSA)の利用を強くお勧めします。

 

なお、SSH2の鍵には統一規格がないため、いくつかの鍵の種類があります。

代表的な商用系SSH(ssh.com)やフリーソフト系SSH(OpenSSH)も各々異なりますが、PuTTYgenもまた独自の書式で鍵を利用しています。

このため、生成した鍵は使用する環境に合わせて、鍵の変換をする必要があります。

(参考)

幸いPuTTYgenではキーペアを生成する際、PuTTYgen独自の鍵の他に、OpenSSHで利用可能な公開鍵も同時に生成してくれるので、WinSCP3で利用する場合は、鍵の変換は省略できます。

 

OpenSSH等で作成したSSH1のキーペアはそのままWinSCP3でも利用可能です。

 

OpenSSH等で作成したSSH2用の秘密鍵をWinSCP3で利用する場合は、PuTTYgenを利用して一度だけPuTTYgenの書式に変換(import機能)しておく必要があります。

詳しくは後述の「4. OpenSSH(ssh-keygenコマンド)で作成した鍵の利用について」を参照ください。

それでは、PuTTYgenを利用したSSH2用(RSA)およびSSH2用(DSA)のキーペア生成とその利用について以下に例を示します。

(SSH1用(RSA1)の利用も後述します。)

 

1

PuTTYgenによるSSH2(RSA)のキーペア作成と 利用について

(1)

WinSCP3と一緒にインストールしたPuTTYgenを起動してみましょう。

 

Windowsの[スタート]ボタンから[プログラム][WinSCP3]中にある[RSA key tools][PuTTYgen]を選択して起動します。

 

(参考)

PuTTYgenは、以下のサイトからダウンロードできます。

 

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

(2) 右図のような[PuTTY key Generator]ウィンドウが表示されます。

ウィンドウ下部の[Parameters]オプションで鍵のタイプを選択できます。

ここでは、[SSH2 RSA]を選択して、[Generate]ボタンを押してキーペアを作成してみましょう。

(3)

キーペアの生成が始まりますが、乱数の種(Random seed)を発生させて鍵を作るため、マウスを1分間程度適当に動かし続けてください。

右図のように緑色のインジケータで鍵生成の進捗状況が表示されます。

全て緑色になるまでマウスを動かし続けてください。

(4)

鍵の生成が完了すると右図のようなウィンドウが表示されます。

生成した秘密鍵はパスフレーズで暗号化されていないため、このまま利用するには安全ではありません。

秘密鍵をパスフレーズで暗号化するために、[Key]オプションの[Key passphrase]欄にパスフレーズを指定してください。

確認のため、再度、[Confirm passphrase]欄に同じパスフレーズを指定します。

(参考)

パスフレーズは長文(空白文字も可)で指定できるので、お気に入りの歌詞や文章等から適当な文字列を忘れない程度に長めに指定することで、より解読が難しくなり安全性が向上します。例え秘密鍵を盗まれても、パスフレーズが解読できなければ、まだ安心です。

 

[Key]オプションの[Key comment]欄は変更可能です。

コメントとして扱われるので、例えば、torasan@sakuraなどと入力しておくと、

サーバに公開鍵認証でログイン時のパスフレーズ入力の際に、以下のように表示されます。

 

(5)

PuTTYgen用の秘密鍵をファイルに保存するために、[Actions]オプションの[Save private key]ボタンを押します。

(6)

右図のように秘密鍵の保存先を指定します。

保存場所もファイル名も任意ですが、秘密鍵は他人に参照されないような場所を選択してください。

(注意)

Windowsのファイル共有などで、知らず知らずにディスク(Cドライブなど)を他人に参照可能にしている危険性がありますのでご注意ください。

この例では、[ファイル名]欄に( id_rsa )と指定しました。

ここで保存する秘密鍵は、PuTTY独自の鍵なので、[ファイルの種類]欄は、[PuTTY Private Key Files]を選択しておきます。

(ファイルの拡張子が ppk となるので、この例では、id_rsa.ppkとして保存されます。)

ファイル名を指定できたら、[保存]ボタンで実際にファイルに保存します。

(7)

次に、公開鍵を保存します。

 

PuTTYgen独自の書式で作成した公開鍵は[Save public key]ボタンで保存できますが、最初に説明したとおり、サーバー側はOpenSSHなので、これを使用しません。

その代わりに、[Key]オプションの[Public key for pasting into OpenSSH authorized_keys2 file]欄に表示されている公開鍵を利用します。

 

マウスでこの公開鍵を全て選択して右図のように反転表示した状態で、その場でマウスの右ボタンを押し、[コピー]を選択してパソコンのバッファに一時的に記憶します。

(8)

パソコンのバッファに記憶した公開鍵を、パソコンのメモ帳にペースト(貼り付け)し、ファイル名を付けて保存します。

(注意)

公開鍵は1行でできているので、途中で改行などしないようにそのまま保存してください。

(公開鍵は他人に見られても問題ありません。)

 

公開鍵も保存先とファイル名は任意です。

(右下図の例では、[ファイルの種類]欄で、[すべてのファイル]を選択し、ファイル名を id_rsa.pub として秘密鍵と同じ場所に保存しました。)

(9)

これでキーペアの作成ができました。

あとは、公開鍵をサーバ側に転送すれば完了です。

 

まずは、WinSCP3のアイコンをダブルクリックします。

 

 

前回保存しておいた設定(この例では、sakura)がある場合は、右図のように[Stored sessions]オプションで接続先を選択して、[Login]ボタンを押してサーバにログインします。

(備考)

前回保存していない場合や新規に接続する場合は、右下図のように[Session]オプションでホスト名、ログイン名、パスワードを指定してサーバーにパスワード認証で接続しましょう。

(10)

WinSCP3でログインしたら、公開鍵の保存先ディレクトリ( ~/.ssh )を作成します。(既にある場合は、次に進んでください。)

 

まず、[Home Directory]ボタンを押して、自分のホームディレクトリ(この例では、/home/torasan )に移動しておきます。

(ログイン直後はホームディレクトリにいるはずなので、確認だけでよい。)

 

次に、メニューバーの[Commands][Create directory..]を選択します。

右下図のように新規に作成するディレクトリ名( .ssh )を指定して[OK]ボタンで作成します。

(注意)

 .ssh は、sshの前のドット”.”をお忘れなく。 

 「ドット エス エス エイチ」 です。

(11) 作成した( .ssh )ディレクトリをダブルクリックして、.sshディレクトリの中に移動します。
(12)

公開鍵ファイル(この例では、id_rsa.pub )をサーバ側へコピーします。

公開鍵ファイルをドラッグして、.sshディレクトリに移動しておいたWinSCP3のウィンドウ中にドロップするだけでコピーできます。

(注意)

コピーするのは、公開鍵だけです。

秘密鍵(この例では、id_rsa )のコピーは不要です。

(13)

最後に[Open Terminal]ボタンを押して、[Console]ウィンドウを開きます。[Enter command]欄にコマンド( cat id_rsa.pub >> authorized_keys )を入力して、[Execute]ボタンでコマンドを実行します。

(参考)

同様に[Enter command]欄で、lsコマンドを入力して、[Execute]ボタンを押すと、ファイルの情報が表示されます。

[Close]ボタンで[Open Terminal]ウィンドウを閉じます。

(14)

WinSCP3のウィンドウに戻ると、前述のコマンド実行により id_rsa.pubの内容がauthorized_keysファイルに追加(この場合は新規作成)されています。

 

(参考)

authorized_keysファイルとid_rsa.pubファイルのアクセス権は 、右図のように自分だけに許可しておいた方が安全です。

アクセス権を変更する場合は、ファイルを選択した状態でマウスの右ボタンでサブメニュ ーの[Properties]を選択して変更できます。

 

(15)

これでキーペアの準備は完了です。

あとは、実際にWinSCP3でSSH2(RSA)の公開鍵認証でサーバにログインしてみましょう。

まずは、WinSCP3のアイコンをダブルクリックします。

 

SSH2を利用するには、右図の[Login]ダイアログボックスの[SSH]オプションで[Protocol options]欄の[Preferred SSH protocol version]で利用するSSHのプロトコルをまたは2onlyを選択しておきましょう。

(16)

前回保存しておいた設定(この例では、sakura)がある場合は、右図のように[Stored sessions]オプションで接続先を選択して、[Load]ボタンを押して設定内容を取り込みます。

(備考)

前回保存していない場合や新規に接続する場合は、[Session]オプションでホスト名、ログイン名を指定します。

(17)

[Password]欄の入力を削除すると、右図のように[Private key file]欄の指定が可能になります。

[ファイル参照]ボタンを押して、秘密鍵ファイルを指定します。

(18)

右図のように[ファイル名]欄に秘密鍵ファイル名を指定して[開く]ボタンを押します。(この例では、id_rsa.ppk を指定したことになります。)

(備考)

ここで[ファイルの種類]欄で、[PuTTY Private Key Files]を指定しておくと、公開鍵名の拡張子が ppkであるファイルが表示されます。ppkでないファイルを選択する場合は、[ファイルの種類]欄で、[すべてのファイル]にして全ファイル名を表示して選択します。

(19) 秘密鍵の指定ができたら [Login]ボタンで実際にSSH2)RSA)の公開鍵認証でサーバに接続してみましょう。
(20)

指定した秘密鍵のパスフレーズを聞いてくるので、入力したら[OK]ボタンを押します。

(21)

公開鍵認証に成功すると、パスワード認証と同様にWinSCP3のウィンドウが現れます。

(22)

あとは、この接続を[Save session]ボタンで保存しておけば、次回から[stored session]オプションから利用できるようになります。

(ここでは、[sakura-ssh2-rsa]という名前で登録しておきます。)

PuTTYgenによるSSH2(DSA)のキーペア作成と利用について

SSH2(DSA)の作成要領は、前述のSSH2(RSA)のキーペア作成とほぼ同様の操作で行えます。

異なる点は以下のとおりです。

・PuTTYgenを起動した後、鍵のタイプをSSH2(DSA)を選択する。

・保存するファイル名をこの例では、秘密鍵(id_dsa)と公開鍵 (id_dsa.pub)にした。(ファイル名と保存場所は任意)

 (サーバー側にSSH2(DSA)公開鍵ファイル(id_dsa.pub)の内容をauthorized_keysに追加する。)

・WinSCP3でサーバに接続する際、作成したSSH2(DSA)秘密鍵を指定して公開鍵認証を行う。

以下に簡単に流れを説明いたします。

(1)

PuTTYgenを起動し、

右図の[PuTTY key Generator]ウィンドウ下部の[Parameters]オプションで鍵のタイプを[SSH2 DSA]を選択します。

 

あとは、[Generate]ボタンを押してキーペアを作成します。

(鍵が生成するまで、マウスを動かし続けて、乱数の種を与えてください。)

(2)

生成した秘密鍵にパスフレーズで暗号化するために、[Key passphrase]欄と[Confirm passphrase]欄に同じパスフレーズを指定します。

 

[Save private key]ボタンを押して、PuTTYgen用のSSH2(DSA)秘密鍵をファイルに保存します。

(ファイル名も保存先も任意です。ここでは、id_dsa.ppkで保存したことにします。)

(注意)

秘密鍵は他人に参照されないようにご注意ください。

(3)

SSH2(DSA)用の公開鍵も、SSH2(RSA)と同様に [Public key for pasting into OpenSSH authorized_keys2 file]欄に表示されているOpenSSH用の公開鍵を利用します。

マウスでこの公開鍵を全て選択し て右図のように反転表示した状態で、その場でマウスの右ボタンを押し、[コピー]を選択し てパソコンのバッファに一時的に記憶し、メモ帳に貼り付けて保存してください。

(ファイル名も保存先も任意です。ここでは、id_dsa.pubで保存したことにします。)

(注意)

SSH2(DSA)のOpenSSH用公開鍵はSSH2(RSA)より文字列が長いため、右図の枠内に表示されていない部分があります。スクロールバーで全て選択するようにしてください。

 

PuTTYgen独自の書式で作成した公開鍵は[Save public key]ボタンで保存できますが、最初に説明したとおり、サーバー側はOpenSSHなので、これを使用しません。

(4)

あとは、SSH2(RSA)の場合と同様に、WinSCP3を起動してパスワード認証または、RSA公開鍵認証等でサーバにログインします。

作成したOpenSSH用の公開鍵をサーバ側の(~/.ssh)ディレクトリにコピー(ファイル転送)します。

最後に[Open Terminal]ボタンを押して、[Enter command]欄でコマンド (  cat id_dsa.pub >> authorized_keys )を入力して、[Execute]ボタンでコマンド実行します。

[Close]ボタンで[Open Terminal]ウィンドウを閉じます。

(5)

以上で、SSH2(DSA)の鍵の準備は完了しました。

WinSCP3を起動して作成した秘密鍵を指定し、SSH2(DSA)公開鍵認証をお試しください。

(注意)

なお、SSH2(DSA)を利用するには、右下図の[SSH]オプションで[Protocol options]欄の[Preferred SSH protocol version]で利用するSSHのプロトコルをまたは2onlyを選択しておく必要があります。

PuTTYgenによるSSH1(RSA)のキーペア作成とTTSSHでの利用について

 

SSH1(RSA)の作成要領は、前述のSSH2(RSAやDSA)のキーペア作成とほぼ同様の操作で行えます。

異なる点は以下のとおりです。

・PuTTYgenを起動した後、鍵のタイプをSSH1(RSA)を選択する。

・保存するファイル名をこの例では、秘密鍵(identity)と公開鍵 (identity.pub)にした。(ファイル名と保存場所は任意)

 (サーバー側にSSH1(RSA)公開鍵ファイル(identity.pub)の内容をauthorized_keysに追加する。)

・TTSSHでサーバに接続する際、作成したSSH1(RSA)秘密鍵を指定して公開鍵認証を行う。

以下に簡単に流れを説明いたします。

 

(1)

PuTTYgenを起動し、右図の[PuTTY key Generator]ウィンドウ下部の[Parameters]オプションで鍵のタイプをSSH1 [RSA]を選択します。

 

あとは、[Generate]ボタンを押してキーペアを作成 します。

(鍵が生成するまで、マウスを動かし続けて、乱数の種を与えてください。)

 

生成した秘密鍵にパスフレーズで暗号化するために、[Key passphrase]欄と[Confirm passphrase]欄に同じパスフレーズを指定します。

 

[Save public key]ボタンを押して、SSh1(RSA)公開鍵をファイルに保存します。

(ファイル名も保存先も任意です。ここでは、公開鍵ファイル名を identity.pub で保存したことにします。)

 

同様にPuTTYgen用のSSH1(RSA)秘密鍵を[Save private key]ボタンを押して、ファイルに保存します。

(ファイル名も保存先も任意です。ここでは、秘密鍵ファイル名をid_dsa.ppkで保存したことにします。)

(注意)

秘密鍵は他人に参照されないようにご注意ください。

(2)

あとは、公開鍵をサーバ側にコピーするため、WinSCP3を起動してパスワード認証等でサーバにログインします。

作成した公開鍵(identity.pub)をサーバ側の(~/.ssh)ディレクトリにコピー(ファイル転送)します。

最後に[Open Terminal]ボタンを押して、[Enter command]欄で

コマンド( cat identity.pub >> authorized_keys )を入力して、[Execute]ボタンでコマンド実行します。

[Close]ボタンで[Open Terminal]ウィンドウを閉じます。

(3)

以上で、SSH1(RSA)の鍵の準備は完了しました。

TTSSH等で作成した秘密鍵を指定し、公開鍵認証をお試しください。

まず、TTSSHのアイコンをダブルクリックします。

[Host]欄でホストのアドレスを指定し、[Service]欄でSSHを選択して、[OK]ボタンを押します。

(4)

右図のように、[User name]欄に自分のログイン名を指定します。

[Use RSA key to login]欄の[Private key file]ボタンを押して、SSH1(RSA)秘密鍵ファイル(この例では、identity.ppk) の場所を指定します。

 

[Passphrase]欄に鍵作成時に指定したパスフレーズを入力します。

(注意)

サーバのアカウント用パスワードは使用しません。

すべて指定したら、[OK]ボタンでログインします。

(5)

鍵の指定とパスフレーズが正しければ、公開鍵認証に成功し右図のようなログイン画面が現れます。

 

(6)

この設定を保存しておくと、次回から設定を省略でき簡単に利用できるようになります。

まず、TTSSHのメニューバーの[Setup][SSH Authentication...]を選択します。

ここで、[Use RSA key to login]にチェックをして、[Privete Key file]ボタンを押して、秘密鍵ファイルを指定します。[OK]ボタンで元に戻ります。

必要に応じてメニューバーの[Setup]から各種設定を修正してください。

 

(備考)

TTSSHのメニューバーの[Setup][TCP/IP]で以下のように接続先ホストの登録を設定して保存しておくと、TTSSH起動時に接続先を選択できるようになるので便利です。

 

(7) 設定を保存するには、TTSSHのメニューバーで[Setup][Save setup]を選択します。
(8)

保存する場所と設定ファイル名を指定します。

ここでは、TERATERMのプログラムを格納している場所

 (ここでは、C:\ProgramFiles\TTERMPRO )に sakura-rsa1.ini というファイル名で保存することにします。)

(参考)

TERATERMの初期設定ファイル(TERATERM.ini)に上書き保存すると、TTSSH等の起動時に設定ファイルの指定を省略した場合に初期設定ファイルとして 読み込まれます。各サーバー共通の設定でなければ、別名で保存した方がよいでしょう。

(9)

設定保存できたら、この設定ファイルを利用してサーバ専用のTTSSHアイコンを作成しておくと便利です。アイコンをダブルクリックするだけで、直接サーバーに公開鍵認証でログインできるようになります。

 

まず、TTSSHアイコン (なければ、C:\ProgramFiles\TTERMPRO\TTSSH.EXE等)を選択し、マウスの右ボタンから[ショートカットの作成]を選択して、ショートカット名を適当な名前に変更します。(ここでは、torasan@sakura RSA1)としました。

 

 

同様に、作成したショートカットを選択し、マウスの右ボタンで[プロパティ]を選択します。

右図のように[ショートカット]タグを表示して、リンク先を以下のように指定します。

 

"C:\Program Files\TTERMPRO\TTSSH.EXE" sakura.cc.tsukuba.ac.jp  /F=sakura-rsa1.ini

 

この例では、以下のように指定しています。ご自分の環境に合わせて修正してください。

 

"TTSSH.EXEの場所" 接続先ホストアドレス /F=設定ファイル名の指定

[OK]ボタンで保存しておけば、次回からこのアイコンをダブルクリックするだけで同じ接続ができます。

OpenSSH(ssh-keygenコマンド)で作成した鍵の利用について

 

冒頭でも説明しましたが、SSH2の鍵には統一規格がないため、いくつかの種類が存在します。

OpenSSH(ssh-keygenコマンド)で作成したSSH2(RSA、DSA)の鍵をWinSCP3で利用する場合、PuTTYgen等を利用して鍵の変換をする必要があります。

(注意)

SSH1の鍵は規格化されているので、鍵の変換は不要です。そのまま利用可能です。

ただし、SSH1は暗号化強度が弱いため、より強力で安全なSSH2の利用をお勧めします。

OpenSSH等で作成したSSH2用の秘密鍵をWinSCP3で利用する場合は、PuTTYgenを利用して一度だけPuTTYgenの書式に変換(import機能)しておく必要があります。

それでは、PuTTYgenを利用したSSH2用(DSA)のキーペア生成とその利用について以下に例を示します。

 

 

(1)

サーバ側(OpenSSH)でキーペアを作成することもできます。

SSH1(RSA)用の鍵は、そのまま利用可能です。

SSH2(RSA,DSA)用の鍵をWinSCP3で利用する場合は、鍵の変換が必要になります。

 

まずは、SSH2(DSA)のキーペアを作成してみましょう。

サーバにTTSSH等でログインします。

@のコマンド( cd ~/.ssh )で ~/.ssh ディレクトリに移動します。

Aのコマンド( ssh-keygen -t dsa )で鍵タイプ(dsa) を指定して鍵

  を生成します。

Bで秘密鍵の保存場所とファイル名を指定します。

  (初期値でよければ、このままリターンキーを押します。)

Cパスフレーズを指定します。

D確認のため、パスフレーズを再度入力します。

Eのコマンド( ls -l )で作成したキーペア(この例では

  id_dsa, id_dsa.pub)のファイル情報を確認し ています。

  (prng_seedファイルはssh-keygenで使用する乱数 を発生させるための種として参照され自動的に保存されました。)

Fのコマンド( cat id_dsa.pub >> authorized_keys )で公開鍵登録用のファイル(authorized_keys)に公開鍵を追加しておきます。

Gファイル情報を確認します。

H不要なアクセス権(この場合は、グループとその他に対して読み

  込み権)を取り消しま した。必要に応じて変更してください。

I最後にもう一度ファイル情報を確認します。

 

 (備考)

 SSH2(RSA)もSSH1(RSA)もほぼ同様の要領です。

 SSH2(RSA)の場合のコマンドは(ssh-keygen -t rsa)となります。

 SS1(RSA)の場合のコマンドは(ssh-keygen -t rsa1)となります。

(2)

OpenSSHで作成した秘密鍵をWinSCP3等を利用してサーバからパソコン側にコピー(ダウンロード)してください。

保存場所は任意ですが、他人に参照されないように注意しましょう。

(注意)

ダウンロードできたらサーバ側の秘密鍵は不要ですので、削除してください。

(3)

WinSCP3でこの秘密鍵(OpenSSHで作成)を利用するには、PuTTY形式の鍵 に変換する必要があります。

まず、PuTTYgenを起動します。

右図のようにPuTTYgenのメニューバーで[Conversions][Import key]を選択します。

 

(4)

サーバからダウンロードした秘密鍵(この例では、id_dsa)を指定して[開く]ボタンを押します。

(5)

秘密鍵の作成時に指定したパスフレーズを入力して[OK]ボタンを押します。

(6)

パスフレーズが正しければ、右図のように指定した秘密鍵を取り込んだ状態になります。

あとは、この鍵を[Save private key]ボタンを押して、PuTTY形式の秘密鍵として保存します。

(7)

保存先とファイル名を指定します。

この例では、[ファイルの種類]欄で、[PuTTY private key files]のままにして、[ファイル名]欄に[ id_dsa ]と指定すると、id_dsa.PPK として保存されます。

(他人に参照されないよう保存場所にご注意ください。)

(8)

これで準備ができたので、実際にWinSCP3でこの秘密鍵を指定して、SSH2(DSA)公開鍵認証をお試しください。

(注意)

SSH2を利用するには、右図の[SSH]オプションで[Protocol options]欄の[Preferred SSH protocol version]で利用するSSHのプロトコルをまたは2onlyを選択しておく必要があります。

筑波大学 学術情報メディアセンター  汎用サーバ(sakura) 教育用計算機(icho) WinSCP3の利用について