"みんながHappy!になる社会を創る。"アララグループの技術者が思うところ。

こんにちは、Shellです。
今日SSHクライアントからX11転送機能でlinuxサーバー上のGUIアプリケーションを操作する方法を紹介させていただきます。

●SSHのX11転送機能が必要になる時

リモートlinuxサーバーを遠距離で操作管理する時、Tera Term、PuttyなどのSSHクライアントを使ってサーバーへ接続し、コマンドラインで作業をするのは一般的なやり方です。しかし、時々コマンドラインだけではどうしても使いづらい場合があり、例えば、oracleをインストールする時、コマンドラインを使ってもできるかもしれないですが、やっぱりGUI画面が有った方が便利です。

サーバー上のGUI画面を使いたい場合、方法としてはVNCとSSHのX11転送の二つがあります。VNCは便利ですが、サーバー上にすでにアクティブなデスクトップ・セッションがないと使えないです。しかし、サーバーへログインしてX Window環境を起動するのは何時でもできるわけではないです。そうした場合、SSHのX11転送の出番になります。

●SSHのX11転送機能の仕組み

MS Windowsと違い、Unix系のX Window環境はクライアント/サーバー系の構造です。XクライアントとXサーバーはハードウェア上のクライアントとサーバーの意味ではなく、サービスの提供側と利用側の視点から見たソフトウェア上のクライアントとサーバーの意味です。GUI画面を表示したいアプリケーションはXクライアントとなり、GUI画面を描くのとキーボード/マウス等のインプットを制御するのはXサーバーの仕事です。

XクライアントとXサーバーとの通信はネットワーク経由で行います。普通、XクライアントとXサーバーは同じコンピュータ上で稼動していますが、物理的に別々のコンピュータ上でも稼動が出来ます。ですから、SSHトンネルを経由して、XクライアントとXサーバの通信を転送し、遠距離でリモートlinuxコンピュータのGUIアプリケーションを操作することが可能となります。

SSHのX11転送機能を使うため、ローカルのパソコンに、上述したTera Term、Putty等SSHクライアント・ソフト以外、Xサーバー・ソフトも必要になります。ローカルのOSはwindowsの場合、選択としてはCygwin/XとXming X Server2つがあります。今回はCygwin/Xを例として説明します。

●Cygwin/Xのインストールと使い方法

Cygwin/XはCygwin(MS Windows環境上使えるunix環境)の一部です。CygwinとCygwin/Xのインストール方法は下記のURLに詳しい説明があります:
http://x.cygwin.com/docs/ug/setup.html#setup-cygwin-x-installing
Cygwinのインストーラー「setup.exe」をダウンロードした後実行して、CygwinとCygwin/Xをインストールします。
※ダウンロード・サイト選択画面(Choose A Downloads Site)で「http://ftp.jaist.ac.jp」等日本から接続が早いサイトを選んでください
※パッケージ選択画面(Select Packages)に、X11中のxorg-server、xinitとfont-jis-miscなどのフォントパッケージ、Net中のopensshをチェックしてください

インストール完了後、「スタート→すべてのプログラム→Cygwin/X→XWin Server」をクリックすると、Xサーバーがスタートし、ターミナル・ウィンドウが開きます。ターミナル・ウィンドウでunixコマンドの入力ができます。

下記のコマンドで、testuserというユーザーでサーバー192.168.0.150へログインできます:
ssh -XC testuser@192.168.0.150
※パラメータXは、SSHのX11転送を有効にします
※パラメータCは、X11関する通信データ圧縮を有効にします(1/10ぐらいまで圧縮出来る)。圧縮しない場合、通信量が多いので、パフォーマンスが良くないです

ログインした後、GUIのアプリケーションが使えるようになります。

●suコマンドでユーザーを切り替えした後の対応

「ssh -XC」でリモート・サーバーへログインした後、GUIアプリケーションが使えるようになりますが、時にはsuコマンドで別のosユーザーへ切り替えるとGUIが使えない場合が有ります。これはoracleをインストールする時、よくでる問題です。
リモート・サーバーの設置によって違うかもしれないですが、デフォルト設置した場合、下記の方法で大体解決出来ます:

1、初めてログインしたユーザーで、コマンド「xauth list」を実行すると、「xxx.co.jp/unix:10 MIT-MAGIC-COOKIE-1 yyyyyyyyyyyyyyyyyyy」の様な結果が出ます
2、「echo $DISPLAY」で、環境変数DISPLAYの値を確認すると、「localhost:10.0」の様な結果が出ます
3、suで切り替えします
4、「echo $DISPLAY」で、環境変数DISPLAYの値を確認し、上記2の結果が違う場合、 「export DISPLAY=localhost:10.0」の様なコマンドで改めて設定します
5、「xauth add xxx.co.jp/unix:10 MIT-MAGIC-COOKIE-1 yyyyyyyyyyyyyyyyyyy」を実行すると、GUIが使えるようになります

●実際例の画面スクリーンキャプチャー

Windows7からCentOSサーバーのプログラムbluefishを操作する様子


Windows7からCentOSサーバーのxfceデスクトップを操作する様子


UbuntuからCentOSサーバーのfirefoxを操作する様子(上の方がCentOSサーバーのfirefox、下の方がローカルのfirefox)

comment