NAT環境内になるX端末へ外部のサーバ上で実行したXアプリケーションをフォワーディングする方法についてです。
まず、Windows XP端末にcygwinを入れてXを動かします。
cygwinを入れたらstartxを実行してXを起動します。
xtermからsshコマンドを実行して外部サーバへログインします。
その時に -R オプションを指定してリモートサーバのXサーバポートをローカルホストのXサーバポートへフォワーディングします。
ssh -R 6000:localhost:6000 ユーザ@外部サーバのIPアドレス
6000番がXサーバポートになります。
リモートの6000番ポートがSSHトンネルを通ってローカルの6000番ポートへ転送されます。
sshで外部サーバへログインしたら、リモードサーバのシェルが表示されます。
これから実行したいXアプリの実行にroot権限が必要な場合は、ここでsuかsudoしてrootになります。必要ない場合はこのままで構いません。
ちなみにethereal-gnomeはrootにならなくても実行できます(実行後にrootのパスワードの入力を要求されます)。
Xアプリを実行するためにリモートサーバ上のシェルでDISPLAY環境変数を設定します。
DISPLAY="localhost:0.0"
export DISPLAY
これで、リモートサーバ上で実行したXアプリはリモートサーバのXサーバポート(6000)へ接続しに行きます。そうすると、SSHによって6000番宛のパケットはローカルホスト(X端末)の6000番へ転送されて、X端末上にXアプリが表示されます。
リモートサーバ上のシェルでXアプリを実行します。
そうすると、Windows XP端末にXアプリが表示されます。
回線が速い&CPUパワーとメモリーがあれば、さくさく動きます。
尚、誰かが外部サーバの6000番ポートを既に使っている(誰かがXアプリを動かしている)場合は、ポート番号を変える必要があります。
ssh -R 6001:localhost:6000 にして、DISPLAY="localhost:1.0"にすれば6001番を使えます。
この時ローカルホスト側は6000のままにしてください。6002番を使いたい場合は、
ssh -R 6002:localhost:6000 にして、DISPLAY="localhost:2.0"にすれば6002番を使えます。
知ってると結構便利です。
外部サーバでEthreal取ってリアルタイムに解析したいとかMySQL Administrator使ってリアルタイムにMySQLサーバの負荷状況を見たいときに。
