ローカルポート転送

ローカルポート転送を使用して、Secure Shell クライアントと同じコンピュータ上で実行されているアプリケーションクライアントからデータを安全に転送できます。ローカルポート転送を構成する時は、データの転送に使用する任意のローカルポート、およびデータを受信する着信先ホストとポートを指定します。 ローカルポート転送は以下のように機能します。

  1. Secure Shell 接続が確立されると、Secure Shell クライアントは、指定されたローカルポートを使用して、ローカルコンピュータ (Secure Shell クライアントを実行しているコンピュータ) 上のリスニングソケットを開きます。ほとんどの場合、このソケットは、Secure Shell クライアントホストで実行されているアプリケーションのみが使用できます。

    ゲートウェイポート設定は、ローカルに転送されるポートをリモートアプリケーションが使用できるかどうかを制御します。既定ではこの設定は無効で、クライアントは、ローカルポート転送のためにソケットを開いた時に、ループバックアドレス (「localhost」または 127.0.0.1) を使用します。これにより、他のコンピュータで実行中のアプリケーションは、転送されるポートに接続できなくなります。ゲートウェイポートを有効にすると、リモートアプリケーションクライアントは、Secure Shell クライアントの Ethernet アドレス (IP アドレス、URL、DNS 名など) を使用してソケットを開くことができます。例えば、acme.com で実行中の Secure Shell クライアントがポート 8088 を転送するよう構成されているとします。ゲートウェイポートが無効な場合、転送されるソケットは localhost:8088 です。ゲートウェイポートが有効な場合、転送されるソケットは acme.com:8088 です。

    注意: ゲートウェイポートを有効化すると、使用しているクライアントホスト、ネットワーク、接続のセキュリティの低下を招きます。この理由は、リモートアプリケーションが、認証なしで、システム上の転送されたポートを使用することが可能になるからです。

  2. アプリケーションクライアントは、(直接、アプリケーションサーバホストおよびポートへではなく) 転送されたポートへ接続するように構成されます。当該クライアントが接続を確立すると、すべてのデータがリスニングポートへ送信され、次に Secure Shell クライアントへリダイレクトされます。
  3. Secure Shell クライアントはデータを暗号化して、Secure Shell チャネルを介して Secure Shell サーバへ安全に送信します。
  4. Secure Shell サーバはデータを受信し、復号化して、そのデータをアプリケーションサーバによって使用される着信先ホストおよびポートへリダイレクトします。

    注意: 最終宛先ホストおよびポートが Secure Shell サーバホスト上にない場合、Secure Shell ホストとアプリケーションサーバホスト間でデータは平文で送信されます。

  5. アプリケーションサーバから返されたデータは Secure Shell サーバへ転送されます。Secure Shell サーバはそのデータを暗号化して、SSH トンネルを介して Secure Shell クライアントへ安全に送信します。Secure Shell クライアントはデータを復号化し、そのデータを元のアプリケーションクライアントへリダイレクトします。

 

ローカルポート転送の一般的なコマンドライン構文は以下のとおりです。

ssh -L listening_port:app_host:hostport user@sshserver

 

以下に示す図は、ローカルポート転送の 2 とおりの使用法を示しています。

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 へ転送されます。

3 つのホストを使用したローカル転送

これは、以下のコマンドによって構成します。

ssh -L 2222:HostC:222 user@HostB

注意: ホスト B とホスト C 間で送信されるデータは暗号化されません。