Windowsマシンから CentOSサーバーに SSHで接続するため、SSHクライアント PuTTYをインストールします。
PuTTYは派生版が多いのですが、今回インストールするパッケージは、本家 PuTTY + ごった煮版 + 各種Patch の ICE IV + PuTTY にします。

当サイトの SSHサーバーは、秘密鍵による接続のみが許可されていますので、秘密鍵による接続を行います。

ダウンロード

IVE IV + PuTTYの サイト から以下のファイルをダウンロードします。
  • GDI レンダリング 2013/08/07
    • putty-gdi-20130807.zip
(※)下線部は 2014/06/14 現在の最新リリース番号です。
なお、ポートフォワードツール PFwd を使用される方は以下のファイルをダウンロードしてください。
2013/03/06以降のリリース版では、Windows7-64bit, Windows8.1-64bitの環境で鍵認証を行う場合に、起動してもすぐに終了してしまうという状況が当サイトでは発生しています。
動作保証するものではありませんが、pfwd.exeのみ 2012/02/11版で動作させても、現時点では特に不具合は発生していません。
  • GDI レンダリング 2012/02/11
    • putty-gdi-20120211.zip

インストール

ダウンロードしたファイルを任意のディレクトリに解凍します。
解凍して作成されたディレクトリ putty-gdi-20130807 を必要に応じて変更します。(以降、PuTTY_HOME とします)
64bit環境で PuTTYを使用する場合は、PuTTY_HOME\x64 内のファイルを PuTTY_HOME にコピーして置き換えます。

PuTTYの設定をレジストリではなく iniファイルに保存することができますが、Subversionクライアント TortoiseSVN を使用する場合はレジストリに保存する必要があります。
iniファイルに保存したい場合は PuTTY_HOME\ini\putty.iniPuTTY_HOME にコピーします。

また、日本語化するため、PuTTY_HOME\ja-JP 内のファイルを PuTTY_HOME にコピーします。

鍵セットの作成

当サイトでは、SSH接続で使用する鍵セットをクライアント側で作成し、接続するサーバー側で作成した公開鍵をインストールする運用にしています。

PuTTY_HOME\puttygen.exeを実行すると PuTTYで鍵セットを作成できます。
(※)クリックすると移動可能な拡大画像がポップアップします。画像は Windows8.1 64bitのものです。
putty0101.png
生成する鍵を SSH-2 RSA に、ビット数を 2048 にします。

生成(G)』で鍵セット(鍵ペア)の作成を開始します。
putty0102.png
鍵の作成は、乱数を生成して行われます。

インジケーター下の空白エリアでマウスを適当に動かして、インジケーターを進めてください。
putty0103.png
鍵セットが作成されたら、『鍵のコメント(C)』と『鍵のパスワード(A)』を設定します。
また、鍵の指紋(フィンガープリント)をメモしておきます。

サーバーへは OpenSSH形式の公開鍵を渡しますので、OpenSSHのauthorized_keysファイルにペーストするための公開鍵(P) の [ssh-rsa設定した鍵のコメント] をコピーしてファイルに保存します。

ファイル名は id_rsa.pub にしました。
putty0104.png
秘密鍵の保存(S)』で PuTTY用秘密鍵を保存します。
PuTTY用秘密鍵の拡張子は ppk になります。

ファイル名は id_rsa.ppk にしました。
putty0105.png
Subversive (Eclipse Subversion Plugin) 等で OpenSSH形式の秘密鍵 が必要になります。

[メニューバー] → [変換(V)] → [『OpenSSH形式へのエクスポート』]で、 OpenSSH形式の秘密鍵を作成します。

ファイル名は id_rsa にしました。
保存した OpenSSH形式の公開鍵 id_rsa.pub を SSHサーバーの管理者に渡し、公開鍵を SSHサーバーに登録してもらいます。

接続セッションの作成

PuTTY_HOME\putty.exe を実行します。
(※)クリックすると移動可能な拡大画像がポップアップします。画像は Windows8.1 64bitのものです。
putty0201.png
[端末] → [高度な設定] で、端末の動作設定を行います。

以下の設定にチェックを入れています。
アプリケーションキーパッドモードを無効にする(K)
テンキーが使用できるようになります
遠隔操作の端末サイズ変更を無効にする(S)
端末サイズをサーバー側から変更できないようにします
Alternate 端末画面への切り替えを無効にする(W)
screen未使用時にエディタから戻っても編集時の表示が消えないようにします
screen使用時に画面を切り替えても切り替え前のスクロールバックを参照できるようにします
遠隔操作のウィンドウタイトル変更を無効にする(T)
端末のウィンドウタイトルをサーバー側から変更できないようにします
putty0202.png
[ウィンドウ] で、端末のウィンドウ設定を行います。

ウィンドウサイズを 120桁 40行 に設定しています。
スクロールバックの行数を 10000行 に設定しています。
putty0203.png
[ウィンドウ] → [外観] で、端末ウィンドウの外観設定を行います。

端末のフォントとサイズを変更しています。
putty0204.png
[ウィンドウ] → [動作] で、端末ウィンドウの動作設定を行います。

ウィンドウタイトルを設定しています。
putty0205.png
[ウィンドウ] → [変換] で、文字セット変換設定を行います。

文字セットを UTF-8 (CJK) に設定しています。
putty0206.png
[ウィンドウ] → [色]で、端末の配色設定を行います。

システムカラーを使う(S) にチェックを入れて、他のアプリケーションウィンドウと配色を同じにしています。
putty0207.png
[接続] → [データ] で、サーバーへ送るデータの設定を行います。

自動ログインのユーザー名(U) を設定すると、ログイン時のユーザー名入力を自動化できます。
TortoiseSVN 等使用する場合は、Subversionサーバーのログインユーザー名を必ず設定しておきます。
putty0208.png
[接続] → [SSH] で、SSH接続の設定を行います。

リモートコマンド(R)screen -R を設定して、接続後に screenコマンドを実行するようにしています。
putty0209.png
[接続] → [SSH] → [認証] で、SSHの認証設定を行います。

Pageantを使って認証する(P) にチェックを入れると、PuTTY付属の Pageantで認証鍵のパスフレーズ入力を代行させることができます。
TortoiseSVN 等でチェックアウトの都度必要になる認証鍵のパスフレーズ入力を代行してくれます。

エージェントフォワーディングを認める(F) にチェックを入れると、後述の Pageantによる認証鍵転送 機能が使用可能になります。

認証のためのプライベートキーファイル(K)鍵セットを作成 で作成した PuTTY用の秘密鍵ファイル id_rsa.ppk の場所を設定します。
putty0210.png
[セッション] で、PuTTYのセッション設定を行います。

ホスト名 (または IP アドレス)(N) に接続する SSHサーバーのホスト名(または IPアドレス)を設定します。

すべての設定が終わったら、セッション名を付けて『保存(V)』で設定を保存します。

SSHサーバーへの接続

SSHサーバーへの接続は、PuTTY_HOME\putty.exe を実行します。
(※)クリックすると移動可能な拡大画像がポップアップします。画像は Windows8.1 64bitのものです。
putty0301.png
[セッション一覧] から接続するセッションをダブルクリックするか、選択して『開く(O)』をクリックします。
putty0302.png
SSHサーバへ接続する鍵セットを初めて使用したときに、その鍵が PuTTYのキャッシュに存在しないため、セキュリティ警告が表示されます。

鍵の指紋(フィンガープリント)が作成時にメモした内容と同じであることを確認し、間違いなければ『はい(Y)』をクリックします。
putty0303.png
ログインユーザー名を入力します。

セッションの設定で 自動ログインのユーザー名(U) を設定した場合は、設定ユーザー名が自動入力されます。
putty0304.png
鍵のパスフレーズを入力します。

PuTTYの鍵セットを作成した時に『鍵のコメント(C)』を入力していた場合は、そのコメントが表示されます。

Pageantの起動

TortoiseSVN 等で SSH接続を利用する際に Pageant を起動(常駐)させておくと、リポジトリ操作で SSH接続時の認証鍵のパスフレーズ入力を代行してくれますの、操作性が向上します。

Pageantの起動(常駐)は、PuTTY_HOME\pageant.exe を実行します。

起動(常駐)すると、タスクバーの通知領域に Pageant のアイコン putty0401.png が表示されます。
アイコンを右クリックして、『鍵の追加(K)』からパスフレーズ入力を代行する鍵を登録します。
putty0402.png

(※)クリックすると移動可能な拡大画像がポップアップします。画像は Windows8.1 64bitのものです。
putty0403.png
Pageantでパスフレーズ入力を代行させる対象の PuTTY用秘密鍵を選択します。
putty0404.png
選択した PuTTY用秘密鍵のパスフレーズを入力します。

安全のため、『パスフレーズを記憶する(S)』は チェックしない ようにします。
チェックをすると、Pageantを終了した後もパスフレーズが記憶されているため、次回から一度もパスフレーズを入力することなく SSH接続ができてしまいます。

PuTTYの鍵セットを作成した時に『鍵のコメント(C)』を入力していた場合は、そのコメントの先頭部分が上部に表示されます。
putty0411.png
Pageantを使用して PuTTYで SSH接続すると、Pageantの鍵の使用について確認画面が表示されます。

Yes』で使用を許可します。

次回以降、確認をしないようにするには『次回から確認しない(D)』にチェックを入れます。

トンネル(ポートフォワード)

外部から自サーバーのメールサーバーに接続しようとしても、ファイアーウォールの設定で 25番ポート(SMTP)や 110番ポート(POP3)への接続が許可されていない場合があります。
そのような場合でも SSHサーバーへ接続することが許可されていれば、PuTTYのトンネル機能を使用してメールサーバーに接続することができます。
また、それ以外に伝送経路を暗号化したい場合にもトンネル機能が使用できます。

例として、メールサーバーへ接続するための設定を行ってみます。
最初に PuTTYの設定を行います。
(※)クリックすると移動可能な拡大画像がポップアップします。画像は Windows8.1 64bitのものです。
putty0501.png
接続するセッションの [接続] → [SSH] → [トンネル] でポートの設定を行います。

源ポート(S)』にクライアント側 PCで接続するポートを指定します。
例では 10025にしていますが、未使用のポートであれば 10025でなくても構いません。

送り先(I)』に SSHサーバーから接続する接続先 のホスト名(または IPアドレス)とポートを : (コロン)で区切って指定します。
例では、SSHサーバーと同じホストに存在するメールサーバー localhost:25 を設定しています。

追加(D)』でフォワードするポートを一覧に追加します。
putty0502.png
25番ポート(SMTP)と 110番ポート(POP3)のトンネル設定を行った状態です。
putty9901.png
トンネル設定を行ったセッションに名前を付けて保存します。

次にメールクライアントの設定を行います。
例として、Bekey! における設定を示します。
(※)クリックすると移動可能な拡大画像がポップアップします。画像は Windows8.1 64bitのものです。
putty0511.png
POP3サーバー、SMTPサーバーともに localhost(クライアント PC) を指定します。

PuTTYのトンネル設定により、クライアント PCのポートが監視されます。
putty0512.png
ポート番号には、トンネル設定の源ポートと同じポートを指定します。
PuTTYのトンネル設定により、クライアント PCのポート(源ポート)とサーバーの送り先ホスト:ポートが、SSHトンネルで接続されます。

メールクライアントを使用する際は、必ず PuTTYのトンネル設定をしているセッションでサーバーと SSH接続しておきます。
SSH接続が切断されるとメールサーバーとの接続も切断されます。

PFwdによるトンネル(ポートフォワード)

上記のトンネル設定では、PuTTYを開いて接続しますので、PuTTYのコンソールが必ずデスクトップ上に出現します。
コンソールが存在すると、コマンドが入力できてしまいますので、メールサーバーへの接続目的等で使用するには危険です。
そこで、コンソールを表示しないで常駐するポートフォワードツール PFwd を使用したトンネル(ポートフォワード)を行ってみます。

まず、PuTTY_HOME内に PFwdの設定ファイル pfwd.ini を作成します。
PuTTY_HOME\pfwd.ini
[SSH]
; SSHサーバーのホスト名(または IPアドレス)を指定します
; PuTTYのセッション名を使用する場合は、@セッション名 で指定します
; ※セッション名の使用は正常に動作しないようです
Host=ssh.system-act.com
Port=22
Compression=1
ProtocolVersion=2
; PuTTY用の秘密鍵ファイル id_rsa.ppk の場所を指定します
PrivateKey=C:\SSH\id_rsa.ppk
; SSHサーバーのログインユーザー名を指定します
User=sshuser
; 鍵のパスフレーズを指定します
; @を付けると最初の起動時に暗号化してくれます
; 空文字にすると起動時にパスフレーズの入力を求めます
Password=@password

[FORWARD]
; SMTP
; 連番=L{クライアント PCのポート(源ポート)}:{サーバーの送り先ホスト:ポート}
01=L10025:localhost:25
; POP3
02=L10110:localhost:110
; PostgreSQL
03=L15432:localhost:5432
PFwdの設定ファイル PuTTY_HOME\pfwd.ini を作成した後、PuTTY_HOME\pfwd.exe を実行すると、PFwdが常駐し、トンネル(ポートフォワード)が有効になります。
PuTTY_HOME\pfwd.exeのショートカットを作成し、スタートアップに入れておけば、PCの起動時に自動でトンネル(ポートフォワード)が有効になります。

Pageantによる認証鍵転送

ネットワーク環境によりクライアント PCから直接ログインできない SSHサーバー(例:Server-X)へ接続する場合、いったん直接ログインが可能な SSHサーバー(例:Server-A)へ接続してから Server-Xに接続することになります。
当サイトでは、仮想データベースサーバー actmysql等が Server-Xに該当します。

通常ですと、Server-Aから Server-Xに SSH接続しますので、Server-AServer-X接続用の秘密鍵が必要になります。
新たな接続用鍵セットを作成してもいいのですが、鍵管理が煩雑にもなりますので鍵セットは増やしたくありません。
そのため、クライアント PCから Server-Aへ接続する鍵セットを利用することにしています。
しかし、セキュリティ面から Server-Aにクライアント PCの秘密鍵を置くことは避けたいものです。

Pageantによる認証鍵転送機能を使用すれば、Server-Aにクライアント PCの秘密鍵を置くことなく、クライアント PCの秘密鍵を使用して Server-AServer-X へ接続することが可能になります。
PuTTYの設定で Pageantによる認証鍵転送機能を有効にします。
(※)クリックすると移動可能な拡大画像がポップアップします。画像は Windows8.1 64bitのものです。
putty0601.png
[接続] → [SSH] → [認証] で、Pageantによる認証鍵転送を有効にします。

エージェントフォワーディングを認める(F) にチェックを入れます。
putty9901.png
Pageantによる認証鍵転送を有効にしたセッションに名前を付けて保存します。
Server-Xには、クライアント PCの公開鍵 id_rsa.pub を登録しておきます。

Pageantによる認証鍵転送の手順は以下になります。
  1. Pageantを起動(常駐)させて、クライアント PCの秘密鍵を登録します。
  2. PuTTYの Pageantによる認証鍵転送を有効にしたセッションServer-Aに SSH接続します。
  3. 接続した Server-A から ssh [ログインユーザー]@[Server-X] で Server-X に SSH接続します。
Server-A に秘密鍵を置いていなくても接続できます。

フィードバック

記事の内容についてのご質問、ご指摘、その他ご意見等は下記にてお願いいたします。
System House ACT公式ブログ内記事 :
PuTTY - Windows開発環境 SSHクライアント

トラックバックまたはコメントにてお寄せください。