1. 概要
本文書は,ISO 2022 による日本語入力・表示を可能にするパッチ を適用した PuTTY (以下,PuTTY)を用いて,SSH ポート転送を使用する手順について述べます.
2. SSH ポート転送機能とは?
SSH(Secure SHell) には,ローカルコンピュータおよびリモートコンピュータの任意のポートに対して要求された TCP 接続を,ネットワーク上の別のコンピュータに転送する機能が備わっています.これをポート転送 (Port forwarding) と呼びます.
これは,クライアントと踏み台の間で確立している SSH 接続を介して,クライアントとサーバの間に擬似的な通信路を確保します.
この機能を用いると,組織内のコンピュータからのアクセスのみを許可するサーバのデータに,外部から直接アクセスすることが可能になります.
例えば,ユーザが必要とするサービスを提供するコンピュータ(以下,サーバ)が組織(学校や会社)のネットワーク上に存在し,サーバは,同じ組織内のコンピュータからのアクセスしか許可していないとします.そのユーザは,組織ネットワーク外のコンピュータ(以下,クライアント)からサーバのサービスを受けたいと考えました.
もちろん,クライアントからサーバに直接アクセスすることはできません.ルータやファイアウォールの他,サーバ本体に施されたアクセス制限が機能しているからです.
しかし,もし組織の内部に,外部から SSH を用いてリモートでログイン可能なコンピュータ(以下,踏み台)が存在し,ポート転送機能が使用可能ならば,そのユーザの目的は達成できるかも知れません(図 1).
実際には図 1 に黒と赤の実線で描いた通信路を使用してデータの送受信を行っています.しかし,サービスとネットワークアプリケーションは,点線で描いた通信路を使用してデータの送受信を行っているように動作します.なお,図 1 の sshd とは,SSH サービス(デーモン)プログラムの名称です.
ポート転送機能の具体的な動作についてはこれ以上述べませんので,他の Web サイトや書籍を参考にしてください.
3. PuTTY で SSH ポート転送を使用する手順
3-1. ポート転送の例
"login.hogehoge.net" を踏み台として,"www.hogehoge.net" という組織内専用の Web サーバ上のリソースを取得することを想定(図 2)します.
3-2. PuTTY の起動と設定
puttyjp.exe を実行します.図 3 のダイアログが表示されます.
まず,接続する SSH サーバのアドレスを指定し,プロトコルを選択してください(図 4).プロトコルを "SSH" にすると,ポート番号欄には自動的に "22" が記入されます.
次に,左側のカテゴリから,「接続→SSH→トンネル」をクリックします.
図 6 の表示に切り替わります.
ここでは,Web サーバ "www.hogehoge.net" のリソースを取得するので,ポート番号は 80 (http; Hypertext Transfer Protocol) とします.したがって,ダイアログ上にある「送り先」と書かれているテキストボックスには,"www.hogehoge.net:80" と記述します.
「源ポート」と書かれたテキストボックスには,クライアントの TCP ポート番号を任意に指定します(指定する番号は,Well-known でないことが望ましい).クライアント上で実行するネットワークソフトウェアは,ここで指定したポートを通じて,仮想的に Web サーバとデータのやりとりを行います.ここでは,仮に 10000 を指定します.
「ローカル」と「リモート」は,ポート転送の方向を指定するための項目です.
- 「ローカル」を選択すると,「自分のコンピュータ」の「源ポート」への通信を,「送り先」へ転送します.
- 「リモート」を選択すると,「ログインする SSH サーバ」の「源ポート」への通信を,「送り先」へ転送します.
ここでは,前者ですので,「ローカル」を選択します.
必要な設定を書き込んだ後の画面を図 7 に示しています.
「追加」ボタンをクリックすると,ポート転送の設定が追加されます(図 8).
最後に,ダイアログの一番下にある「開く」ボタンをクリックし,サーバにリモートログインします.ログインが完了すれば,ログインしている間はクライアントのポート 10000 への接続は,Web サーバ "www.hogehoge.net" のポート 80 へ転送されます.
3-3. 設定した仮想通信路をブラウザから利用する方法
Web ブラウザを起動し,URI に "https://localhost:10000/" と指定します(図 9).
外部からの直接接続が制限あるいは制限されている Web サーバ上のリソースを取得できます.
他のネットワークソフトウェアを用いる場合も,"localhost" とポート番号を指定することで,同様に利用できます.