リモートポート転送を使用して、Secure Shell サーバホストで実行されているアプリケーションクライアントからデータを安全に転送できます。リモートポート転送を構成する時は、データの転送に使用する任意のリモートポート、およびデータを受信する着信先ホストとポートを指定します。
リモートポート転送は次のように動作します。
Secure Shell 接続が確立されると、Secure Shell サーバは、指定したリスニングポートを使用して、Secure Shell サーバホスト上のリスニングsocket ホスト名 (IP アドレスまたは DNS 名) とポート番号の組み合わせです。これは、クライアントアプリケーションが通信のエンドポイントとして使用する一意の識別子となります。 を開きます。
Secure Shell サーバホストで動作するクライアントアプリケーションは、(アプリケーションサーバホストおよびポートに直接接続する代わりに) リスニングポートに接続するように構成されます。そのクライアントが接続を確立すると、すべてのデータがリスニングポートに送信され、Secure Shell サーバにリダイレクトされます。
Secure Shell サーバはデータを暗号化し、SSH トンネルを通じて安全に Secure Shell クライアントにデータを送信します。
Secure Shell クライアントは、データを受信し、解読し、サーバアプリケーションが使用する (Secure Shell クライアントホスト上の) 宛先ホストおよびポートにリダイレクトします。
サーバアプリケーションからの戻りデータは Secure Shell クライアントに送られ、Secure Shell クライアントは戻りデータを暗号化し、SSH トンネルを通じて Secure Shell サーバに安全に送信します。Secure Shell サーバはデータを解読し、元のクライアントアプリケーションにデータをリダイレクトします。
リモートポート転送の場合の一般的なコマンドライン構文は次のとおりです。
ssh -R listening_port:app_host:hostport user@sshserver
次の図に、リモートポート転送構成の例を示します。
HostA では、アプリケーションサーバと Secure Shell クライアントが動作しています。HostB では、Secure Shell サーバとアプリケーションクライアントが動作しています。HostB のポート 2222 に送信されるすべてのデータが、HostA のポート 222 に転送されます。この配置では、通過中のすべてのデータが安全に暗号化されます。これを構成するコマンドは次のとおりです。
ssh -R 2222:localhost:222 user@HostB