next up previous
: 3. UNIX上でのポート転送 : 2. ポート転送による安全な通信 : 2.1 POP3 : Post

2.2 SSHのポート転送

SSHを用いると,遠隔地間にある2つの計算機間に安全な通信路を確立する事がで きます.これは遠隔地間の通信を暗号化して行なうために,悪意がある者が途中 経路で通信を盗聴していたとしても,内容を理解することが不可能である,とい う事実に因ります.このSSHの通信路を用いて,POPやFTPなどの安全でない通信 を行なうのが,ポート転送です.

ポート転送には,ローカル転送とリモート転送の二種類があります.ローカル転 送は,手元の計算機のポートに出入りするデータを,接続先の計算機に転送する ものです.リモート転送は,接続先の計算機のあるポートに出入りするデータを 接続元の計算機へ転送し,手元の計算機上で提供されているサービスを遠隔地の 計算機から利用する場合に利用します.サービスを受ける計算機が異なるだけで, どちらもほぼ同様に使うことができます.ローカル転送の方が良く利用されると 思われますので,以後のポート転送は特に断らない限りローカル転送の事としま す.

図 4: SSHとPOP

POPを例にしてSSHによるポート転送を説明します.図4にその 概念図を示します.先に示した図3のようにPOPクライアントとサー バが直接会話するのではなく,別のSSHという暗号語を喋る通訳とか代理人を介 して情報をやりとりする,という風に考えるとわかりやすいかもしれません. POPクライアントから見ると,SSHはPOPサーバの代理人に見え,POPサーバからは SSHがPOPクライアントのように見えます.

図 5: ポート転送を用いたPOP

5に,より詳細な関係図を示します.POPクライアント 側の計算機では,POPクライアントを起動する前に,ユーザは転送に利用するポー ト番号jjjjを指定して予めSSHを起動しておきます.その後POPクライアントを 「自分自身の計算機のjjjj番ポートに対して接続する」ように起動します.この ためにはPOPクライアントプログラムが,接続先のポート番号を設定可能でなけ ればなりません.

クライアント側のjjjj番ポートは,SSHがポート転送を行なうものとして予め起 動されていますので,POPクライアントからの接続を受けたクライアント側SSHは, サーバ側のSSHへデータを暗号化して転送します.この時クライアント側のSSHは kkkk番ポートから,POPサーバ側の計算機のSSH(22番ポート)へデータを送ります. kkkk番ポートは,OSがSSHに自動的に割り当てた番号です.

サーバ側のSSHは,クライアント側計算機からの通信を解読してPOPサーバに送り ます.その際,内部にnnnn番ポートを作成し,そのポートを通じてPOPサーバと 通信します.nnnn番ポートも,OSを介してSSHに自動的に割り当てられる番号で す.POPサーバは,サーバ側内部にあるSSHをPOPクライアントと見なして処理を 行ないます.メールの送信のようなPOPクライアントへの応答は,サーバ側のSSH へ送ります.

POPクライアントはPOPサーバと通信するように自分自身の計算機内部にあるSSH と通信します.逆にPOPサーバはPOPクライアントと通信するように,サーバ側計 算機内部にあるSSHと通信するのです.このようにプログラムの通信情報を,SSH が代理人となって暗号化通信を行なうのがポート転送です.



平成12年1月7日