X11 ForwardingとOSX、Windowsからのリモート接続の話し
普段、X11はあまり使いませんが、今回、Oracle Databaseをサーバーにセットアップする必要があったので、OUIのために環境を用意しました。
環境は、社外のデータセンターのサーバーで、自宅から接続するため、SSHでトンネリングして、X11を使う必要がありました。
やりかたは複数
- CygwinX(Windows)やXQuartz(OSX)でSSHの-Xオプションを使う
- CygwinXやXmingのようなX ServerとPuttyや、TeraTermのようなX11フォーワーディングの設定ができるSSHクライアントを組み合わせる
サーバー側の設定
X11 Forwardingの設定が有効になっているか確認。
netstatで確認すると、リモートサーバー側で6000+オフセットの値のポートがリッスンされています。下の例だと、オフセットが10で設定されている。
$ netstat -tan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:6010 0.0.0.0:* LISTEN
DISPLAY変数は設定しなくても、自動で設定されます。
$ env | grep DISPLAY
DISPLAY={Remote Server}:10.0
仕組みとしては、リモートサーバー側のDISPLAYで受けて、SSH経由でローカルPCのDIPLAYに転送してくれるようです。
次、クライアント側の設定です
1. CygwinX(Windows)やXQuartz(OSX)でSSHの-Xオプションを指定する
ssh -X -v {User}@{Remote Server}
-X
を付けるとForwardingが有効となります。
-v
を付けることで、詳細なメッセージがでるため、上手く利用できない場合は、-v
を付けてエラーの内容を見ていきます。
この状態で、Xが必要なプログラムを実行すると、ウィンドウが立ち上がります。
もともとこのやり方で、OSX環境でやろうとしていました。 が、問題がありました。この方法でOracle DBのOUIを実行した場合、ボタンなどのUIコンポーネントを操作することができませんでした。xeyeなんかは普通に実行できたので、アプリケーションの作りによって相性がありそうです。
2. CygwinXやXmingのようなX ServerとPuttyや、TeraTermのようなX11フォーワーディングの設定ができるSSHクライアントを組み合わせる
さて、実際にはこのやり方でやりました。
Puttyや、TeraTermにはX11転送のための設定があります。それを有効にすればOKです。 Puttyや、TeraTerm上でXが必要なプログラムを実行するとローカルPC側のDIPLAYにそれぞれのターミナルソフトが転送してくれます。
それにしても、Oracle DBをセットアップする上で、インストーラーがGUIである必要はまったくないですよね。 ファイルを使ったサイレント・インストールも用意されているけど、GUIとできることが違うし。システム要件の事前チェックのスキップとか。
Linuxや、Redhatをセットアップするときのように、CUIでインタラクティブに設定させてもらえると楽だなぁ。