PuTTY を用いた SSH ポート転送の手順

目次

1. 概要

本文書は,ISO 2022 による日本語入力・表示を可能にするパッチ を適用した PuTTY (以下,PuTTY)を用いて,SSH ポート転送を使用する手順について述べます.

2. SSH ポート転送機能とは?

SSH(Secure SHell) には,ローカルコンピュータおよびリモートコンピュータの任意のポートに対して要求された TCP 接続を,ネットワーク上の別のコンピュータに転送する機能が備わっています.これをポート転送 (Port forwarding) と呼びます.

これは,クライアントと踏み台の間で確立している SSH 接続を介して,クライアントとサーバの間に擬似的な通信路を確保します.

この機能を用いると,組織内のコンピュータからのアクセスのみを許可するサーバのデータに,外部から直接アクセスすることが可能になります.

例えば,ユーザが必要とするサービスを提供するコンピュータ(以下,サーバ)が組織(学校や会社)のネットワーク上に存在し,サーバは,同じ組織内のコンピュータからのアクセスしか許可していないとします.そのユーザは,組織ネットワーク外のコンピュータ(以下,クライアント)からサーバのサービスを受けたいと考えました.

もちろん,クライアントからサーバに直接アクセスすることはできません.ルータやファイアウォールの他,サーバ本体に施されたアクセス制限が機能しているからです.

しかし,もし組織の内部に,外部から SSH を用いてリモートでログイン可能なコンピュータ(以下,踏み台)が存在し,ポート転送機能が使用可能ならば,そのユーザの目的は達成できるかも知れません(図 1).

SSH により,クライアントとサーバの間に擬似的な通信路が確保されている状態を示す図です.黒の実線で表しているのは,クライアントから PuTTY への接続と,踏み台の SSH サービスから,サーバへの接続です.赤の実線で表しているのは PuTTY から踏み台の SSH サービスへの接続です.点線で表しているのが,SSH ポート転送機能により確立された,クライアントとサーバの間の仮想的な通信路です.
図 1: SSH ポート転送の概要

実際には図 1 に黒と赤の実線で描いた通信路を使用してデータの送受信を行っています.しかし,サービスとネットワークアプリケーションは,点線で描いた通信路を使用してデータの送受信を行っているように動作します.なお,図 1 の sshd とは,SSH サービス(デーモン)プログラムの名称です.

ポート転送機能の具体的な動作についてはこれ以上述べませんので,他の Web サイトや書籍を参考にしてください.

3. PuTTY で SSH ポート転送を使用する手順

3-1. ポート転送の例

"login.hogehoge.net" を踏み台として,"www.hogehoge.net" という組織内専用の Web サーバ上のリソースを取得することを想定(図 2)します.

ポート転送の具体例を示す図です.クライアントのネットワークソフトウェアが踏み台 login.hogehoge.net を経由することで,ファイアウォールによって隔離されたサーバ www.hogehoge.net のポート 80 に接続をしている様子を表しています.
図 2: ポート転送の具体例

3-2. PuTTY の起動と設定

puttyjp.exe を実行します.図 3 のダイアログが表示されます.

PuTTY 起動直後に表示される PuTTY セッション設定ダイアログの図です.
図 3: PuTTY セッション設定ダイアログ

まず,接続する SSH サーバのアドレスを指定し,プロトコルを選択してください(図 4).プロトコルを "SSH" にすると,ポート番号欄には自動的に "22" が記入されます.

SSH サーバのアドレス "login.hogehoge.net" とプロトコル "SSH" を選択した直後のPuTTY セッション設定ダイアログの図です.
図 4: PuTTY セッション設定ダイアログ

次に,左側のカテゴリから,「接続→SSH→トンネル」をクリックします.

PuTTY 設定ダイアログにおける,転送設定記入項目の位置を示す図です.ダイアログの左側のツリーに "接続" と表記された項目があります.そこから "SSH","トンネル" を順に辿ります.
図 5: PuTTY セッション設定ダイアログ(転送設定記入項目の位置)

図 6 の表示に切り替わります.

PuTTY ポート転送設定ダイアログの図です.ここにポート転送の設定を記入します.
図 6: PuTTY ポート転送設定ダイアログ

ここでは,Web サーバ "www.hogehoge.net" のリソースを取得するので,ポート番号は 80 (http; Hypertext Transfer Protocol) とします.したがって,ダイアログ上にある「送り先」と書かれているテキストボックスには,"www.hogehoge.net:80" と記述します.

「源ポート」と書かれたテキストボックスには,クライアントの TCP ポート番号を任意に指定します(指定する番号は,Well-known でないことが望ましい).クライアント上で実行するネットワークソフトウェアは,ここで指定したポートを通じて,仮想的に Web サーバとデータのやりとりを行います.ここでは,仮に 10000 を指定します.

「ローカル」と「リモート」は,ポート転送の方向を指定するための項目です.

ここでは,前者ですので,「ローカル」を選択します.

必要な設定を書き込んだ後の画面を図 7 に示しています.

ポート転送の設定(送り先=www.hogehoge.net:80,源ポート=10000,ポート転送方向=ローカル)を記入した後の PuTTY ポート転送設定ダイアログの様子です.ダイアログ上の「追加」ボタンを押すことで,設定が確定します.
図 7: PuTTY ポート転送設定ダイアログ(設定記入後)

「追加」ボタンをクリックすると,ポート転送の設定が追加されます(図 8).

「追加」ボタンをクリックし,ポート転送設定を確定した状態の PuTTY ポート転送設定ダイアログの図です.
図 8: PuTTY ポート転送設定ダイアログ(設定後)

最後に,ダイアログの一番下にある「開く」ボタンをクリックし,サーバにリモートログインします.ログインが完了すれば,ログインしている間はクライアントのポート 10000 への接続は,Web サーバ "www.hogehoge.net" のポート 80 へ転送されます.

3-3. 設定した仮想通信路をブラウザから利用する方法

Web ブラウザを起動し,URI に "https://localhost:10000/" と指定します(図 9).

Internet Explorer のアドレス欄に URI を入力している様子を表した図です.
図 9: Internet Explorer のアドレス欄に URI "https://localhost:10000/" を入力

外部からの直接接続が制限あるいは制限されている Web サーバ上のリソースを取得できます.

他のネットワークソフトウェアを用いる場合も,"localhost" とポート番号を指定することで,同様に利用できます.


Valid XHTML 1.0! Valid CSS!
© 2004-2007 by ぱくちゃん.
Last modified: Tue Jan 9 05:37:50 JST 2007