ローカルポート転送を使用して、Secure Shell クライアントと同じコンピュータ上で実行されているアプリケーションクライアントからデータを安全に転送できます。ローカルポート転送を構成する時は、データの転送に使用する任意のローカルポート、およびデータを受信する着信先ホストとポートを指定します。
ローカルポート転送は次のように動作します。
Secure Shell 接続が確立されると、Secure Shell クライアントは、指定のローカルポートを使用して、ローカルコンピュータ (Secure Shell クライアントを実行しているコンピュータ) 上のリスニングsocket ホスト名 (IP アドレスまたは DNS 名) とポート番号の組み合わせです。これは、クライアントアプリケーションが通信のエンドポイントとして使用する一意の識別子となります。 を開きます。ほとんどの場合、Secure Shell クライアントホストを実行しているアプリケーションのみがこのソケットを使用できます。
ゲートウェイポート設定は、ローカルに転送されるポートをリモートアプリケーションが使用できるかどうかを制御します。既定ではこの設定は無効で、クライアントは、ローカルポート転送のためにソケットを開いた時に、ループバックアドレス (「localhost」または 127.0.0.1) を使用します。これにより、他のコンピュータで実行中のアプリケーションは、転送されるポートに接続できなくなります。ゲートウェイポートを有効にすると、リモートアプリケーションクライアントは、Secure Shell クライアントの Ethernet アドレス (IP アドレス、URL、DNS 名など) を使用してソケットを開くことができます。例えば、acme.com で実行中の Secure Shell クライアントがポート 8088 を転送するよう構成されているとします。ゲートウェイポートが無効な場合、転送されるソケットは localhost:8088 です。ゲートウェイポートが有効な場合、転送されるソケットは acme.com:8088 です。
注意:認証無しにお使いのシステムでリモートアプリケーションが転送ポートを使用する許可を与えるため、ゲートウェイポートを有効化すると、使用しているクライアントホスト、ネットワーク、接続のセキュリティの低下を招きます。
アプリケーションクライアントは、(アプリケーションサーバホストおよびポートに直接接続するのでなく) 転送ポートに接続するように構成されます。そのクライアントが接続を確立すると、すべてのデータがリスニングポートに送信され、Secure Shell クライアントにリダイレクトされます。
Secure Shell クライアントはデータを暗号化し、Secure Shell チャネルを通じて Secure Shell サーバに安全にデータを送信します。
Secure Shell サーバはデータを受信して解読し、アプリケーションサーバによって使用される送信先ホストおよびポートにリダイレクトします。
メモ:最終目標のホストとポートが Secure Shell サーバホストにない場合、データはプレーンテキストで Secure Shell ホストとアプリケーションサーバホスト間によって送信されます。
アプリケーションサーバからの戻りデータは Secure Shell サーバに送られ、Secure Shell サーバは戻りデータを暗号化し、SSH トンネルを通じて Secure Shell クライアントに安全に送信します。Secure Shell クライアントはデータを解読し、元のアプリケーションクライアントにデータをリダイレクトします。
ローカルポート転送の一般的なコマンドライン構文は以下のとおりです。
ssh -L listening_port: app_ host: hostport user@ sshserver
以下に示す図は、ローカルポート転送の 2 とおりの使用法を示しています。
上記の構成では、アプリケーションクライアントと Secure Shell クライアントの両方がホスト A で実行されます。Secure Shell サーバとアプリケーションサーバの両方はホスト B で実行されます。ホスト A のポート 2222 へ送信されたすべてのデータはホスト B のポート 222 へ転送されます。この配置では、通過中のすべてのデータが安全に暗号化されます。これは、以下のコマンド (localhost はホスト B のループバックアドレスを識別します) によって構成します。
ssh -L 2222:localhost:222 user@HostB
以下の図は、3 番目のホストへのローカルポート転送を示しています。この構成では、アプリケーションサーバが、Secure Shell サーバとは異なるホストで実行されます。ホスト A のポート 2222 へ送信されたすべてのデータはホスト C のポート 222 へ転送されます。
これを構成するコマンドは次のとおりです。
ssh -L 2222:HostC:222 user@HostB
メモ:ホスト B とホスト C 間で送信されるデータは暗号化されません。