« マザー牧場 | メイン | 古代エジプト展 »

NAT越えX forwarding

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サーバの負荷状況を見たいときに。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2005年09月01日 00:00に投稿されたエントリーのページです。

ひとつ前の投稿は「マザー牧場」です。

次の投稿は「古代エジプト展」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

アーカイブ

お薦めショップ

  • HagyShop   ボクの大好きな作品だけ、
      お薦めの本と映画をご紹介。