SSHの詳細

 安全なコマンドラインインターフェイスは、SSHを使用できる数多くの方法のまさに開始点です。正しい量の帯域幅が割り当てられていれば、X11セッションをSSHチャネル上で送信することができます。また、TCP/IPフォワーディングを使用することで、以前は安全性に欠けていたシステム間のポート接続を特定のSSHチャネルにマップすることができます。

X11フォワーディング

 確立されているSSH接続上でX11セッションを開くことは、ホストでXクライアントをすでに実行しているときにXプログラムを実行するのと同じくらい簡単なことです。SSHプロンプトからXプログラムを実行すると、SSHクライアントとSSHサーバーが現在のSSH接続内で新しい安全なチャネルを作成し、まるでローカル端末を介してXサーバーに接続しているかのように、Xプログラムのデータがそのチャネルを介してクライアントマシンに送られます。

 おわかりにように、X11フォワーディングは非常に便利です。たとえば、X11フォワーディングを使用して、サーバー上のup2date GUIとの安全でインタラクティブなセッションを作成し、パッケージの更新を指定することができます(必要なRed Hat Networkパッケージがサーバーにインストールされている場合)。この場合には、sshを使用してサーバーに接続し、次のように入力します。

up2date

 サーバーにrootパスワードを提供することが求められます。パスワードを指定すると、Red Hat Update Agentが表示されるので、サーバーマシンの前に座っているかのようにサーバー上のパッケージを更新することができます。

 ただし、チャネル上で送信する情報を暗号化したり復号する場合に必要となる処理オーバーヘッドと、暗号化したXアプリケーションデータの送信に必要となる追加帯域幅が問題になることもあります。適切なテストを実行して、特定のハードウェアと帯域幅の条件下でも、Xプログラムが使用できるかどうかを確認する必要があります。

TCP/IPフォワーディング

 TCP/IPフォワーディングは、SSHクライアントで、クライアント側またはサーバー側の特定のポートを既存のSSH接続を介してマップする必要がある場合に利用します。

 クライアント上のローカルポートをサーバー上のリモートポートにマップするには、まず両方のマシン上のポート番号を知らなければなりません。2つの非標準の異なるポートを互いにマップすることもできます。

 ローカルホスト上で接続を受信待機するTCP/IPフォワーディングチャネルを作成するには、次のコマンドを実行します(すべて1行に入力します)。

ssh -L <local-port>:<remote-hostname>:<remote-port>
<username>@<hostname>

Note注意
 

TCP/IPフォワーディングを設定して1024以下のポートで受信待機する場合は、1024以下のポートで受信待機するサービスを開始する場合と同じように、rootアクセス権が必要です。

 たとえば、POPを使用しているmail.domain.comというサーバー上のEメールをチェックしたい場合で、そのサーバーがSSH対応の場合は、次のコマンドを使用してTCP/IPフォワーディングを設定することができます。

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

 TCP/IPフォワーディングを2台のマシン間に適切に設定すれば、ローカルホストをPOPサーバーとし、1100をポートとして使用して、新しいメールがあるかどうかチェックすることをPOPメールクライアントに指示することができます。ローカルホスト上のポート1100に送られた要求は、mail.domain.comサーバーに安全にフォワーディングされます。

 mail.domain.comでSSHサーバーデーモンが実行されていないけれども、ファイアウォールなどを通り、SSHを介して近くのマシンにログインできる場合も、SSHを使用して公衆網上で確立されるPOP接続の一部の安全性を確保することができます。この場合に必要なコマンドは少し異なります。

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

 この例では、ローカルマシンのポート1100からSSH接続を介してother.domain.comのポート22にPOP要求をフォワーディングしています。これで、other.domain.comは、mail.domain.com上のポート110に接続して、新しいメールがあるどうかをチェックすることができます。安全なのは、ローカルシステムとother.domain.com間の接続だけですが、以前よりもセキュリティを向上させることにより、公衆網上でも情報を安心して取得できるようになるので、通常はこれで十分です。

 もちろん、この例とその前の例では、SSHサーバーに対して認証を実行できなければ、TCP/IPフォワーディングを実行することはできません。TCP/IPフォワーディングの設定を試みる前に、通常のSSHコマンドを実行できることを確認してください。

 TCP/IPフォワーディングは特に、情報の安全な取得にネットワークファイアウォールを利用している場合に役立ちます。標準ポート(22)を通るSSHトラフィックは認めるけれども、他のポートからのアクセスはブロックするようにファイアウォールを設定した場合、ブロックされたポートを使用する2つのホスト間の接続は、その2つのホスト間で確立されたSSH接続を介して通信をリダイレクトすることで可能となります。

Note注意
 

ただし、これは非常に危険があります。TCP/IPフォワーディングを使用してこのように接続をフォワーディングすると、クライアントシステム上のユーザーは、接続のフォワーディング先のサービスに接続できるようになるため、クライアントシステムに侵入があった場合に危険が生じることがあります。

TCP/IPフォワーディングを使用してファイアウォールを迂回する前に、ファイアウォールを管理しているシステム管理者に問い合わせましょう。TCP/IPフォワーディングを担当しているシステム管理者は、/etc/ssh/sshd_config内のthe AllowTcpForwarding行でNoパラメータを指定して、sshdサービスを再起動することで、サーバーのこの機能を無効にすることができます。