20.7.2. ポート転送
SSH は、ポート転送によりセキュリティー保護されていない TCP/IP プロトコルをセキュアにすることができます。この手法を使用する場合、SSH サーバーは SSH クライアントをつなぐ暗号化された経路となります。
ポート転送は、クライアント上のローカルポートをサーバー上のリモートポートにマッピングすることで機能します。SSH は、サーバーからクライアントの任意のポートにマップできます。この手法が機能するにはポート番号を一致させる必要はありません。
localhost で接続をリッスンする TCP/IP ポート転送チャンネルを作成するには、以下のコマンドを使用します。
ssh -L local-port:remote-hostname:remote-port username@hostname
注記
1024 未満のポートでリッスンするようにポート転送を設定するには、root レベルのアクセスが必要です。
暗号化された接続で POP3 を使用して mail.example.com という名前のサーバーで電子メールを確認するには、以下のコマンドを使用します。
ssh -L 1100:mail.example.com:110 mail.example.com
ポート転送チャンネルがクライアントマシンとメールサーバー間に配置されたら、POP3 メールクライアントに localhost 上のポート 1100 を使用して新しいメールを確認するように指示します。クライアントシステム上のポート 1100 に送信されたリクエストは、安全に mail.example.com サーバーに転送されます。
mail.example.com が SSH サーバーを実行しておらず、同じネットワーク上の別のマシンが でも、SSH を使用して接続の一部をセキュアにすることができます。ただし、若干異なるコマンドが必要になります。
ssh -L 1100:mail.example.com:110 other.example.com
この例では、クライアントマシン上のポート 1100 からの POP3 リクエストは、ポート 22 の SSH 接続を介して SSH サーバー other.example.com に転送されます。次に、other.example.com は mail.example.com のポート 110 に接続して、新しいメールを確認します。この手法を使用する場合、クライアントシステムと other.example.com SSH サーバー間の接続のみがセキュアである点に注意してください。
ポート転送は、ネットワークのファイアウォール経由でセキュアに情報を取得する場合にも使用できます。ファイアウォールが標準ポート(22)経由の SSH トラフィックを許可するように設定されていて、他のポートへのアクセスをブロックする場合は、確立された SSH 接続を介して通信をリダイレクトすることで、ブロックされたポートを使用する 2 つのホスト間の接続は引き続き可能です。
注記
この方法でポート転送を使って接続を転送すると、クライアントシステム上のどのユーザーもそのサービスに接続できます。クライアントシステムが侵害された場合、攻撃者は転送されたサービスにアクセスすることもできます。
ポート転送に関するシステム管理者は、
/etc/ssh/sshd_config
の AllowTcpForwarding 行に No パラメーターを指定して sshd サービスを再起動することで、この機能をサーバー上で無効にできます。