6.7.2. ポート転送

6.7.2. ポート転送

SSH は、他では不安全なポート転送経由の TCP/IP プロトコルを安全にすることができます。この技術を使用する場合、 SSH サーバーは SSH クライアントに対する暗号化した導管になります。

ポート転送は、クライアント上のローカルポートをサーバー上のリモートポートにマッピングすることで機能します。 SSH ではサーバーのどんなポートからでもクライアント上のどんなポートにもマップ可能です。この技術が機能するのにポート番号が一致する必要はありません。

ローカルホスト上の接続をリスンする TCP/IP ポート転送チャンネルを作成するには、次のコマンドを使用します:

ssh -L local-port:remote-hostname:remote-portusername@hostname

注記

1024 以下のポートをリスンする為のポート転送をセットするには、 root レベルのアクセスが必要です。

暗号化した接続を経由して、 POP3 を使った mail.example.com と言うサーバー上のメールをチェックするには、次のコマンドを使用します:

ssh -L 1100:mail.example.com:110 mail.example.com

ポート転送チャンネルがクライアントマシンとメールサーバー間に配置されると、 POP3 メールクライアントに対しローカルホスト上のポート 1100 を使用して、新規メールをチェックするように指示します。クライアントシステム上のポート 1100 に送信される要求はいずれも安全に mail.example.com サーバーに向けられます。

mail.example.com が SSH サーバーを実行していなくて、同じネットワークの別のマシンが SSH サーバーを実行している場合、 SSH はそれでも使用可能であり、接続の一部を安全にすることができます。しかし、次のような少々異なるコマンドが必要です:

ssh -L 1100:mail.example.com:110 other.example.com

この例では、クライアントマシン上のポート 1100 からの POP3 要求がポート 22 上の SSH 接続を通じて SSH サーバー other.example.com に転送されます。それから、 other.example.commail.example.com 上のポート 110 に接続して、新規のメールをチェックします。この技術を使う場合、クライアントシステムと other.example.com の SSH サーバー間の接続のみが安全であることに注意して下さい。

ポート転送は、ネットワークのファイヤーウォールを通過して安全に情報を取得することにも使用できます。ファイヤーウォールがその標準ポート (22) を経由して SSH トラフィックを許可するように設定されていて、他のポートへのアクセスを阻止している場合、確立された SSH 接続上でそれらの通信を転送することにより、阻止されたポートを使用する二つのホスト間の接続が可能になります。

注記

この方法でポート転送を使って、接続を転送すると、そのクライアントシステム上のユーザーはいずれもそのサーバーに接続できるようになります。但し、クライアントシステムが侵略された場合、攻撃者は転送サービスにまでもアクセスが出来るようになります。

ポート転送に懸念のあるシステム管理者は、 /etc/ssh/sshd_config にある AllowTcpForwarding の行に No パラメータを指定して、 sshd サービスを再起動することでサーバー上のこの機能を無効にすることができます。