LinuxサーバのGUIアプリケーションをリモートで起動する

Last-modified: 2014-08-16 (土) 12:41:50 (2237d)

LinuxサーバのGUIアプリケーションをリモートで起動する

Windows端末からLinuxにsshでログインして作業を行う際、GUIを使いたいと思うことが多々ある。そういった場合、Windows上でXサーバを起動し、そこにアプリケーションの画面を表示させればよい。

サーバマシン (geditなどのアプリケーション)
     ↑
   LAN(SSH)
     ↓
クライアントマシン (Xサーバを起動)
     ↑
  ユーザー

Xサーバについての解説ページでは散々書かれているが、クライアントマシンで起動させるソフトウェアが「Xサーバ」なので注意すること。

Linuxクライアント+Linuxサーバ

まず、クライアントマシンがWindowsでなくてLinuxの場合は作業は簡単だ。sshでログインする際に -X オプションをつけるだけでよい。 「serveraddr」というサーバの20022ポートでsshが起動しており、そこユーザー「hogesan」でログインする場合は、

client$ ssh hogesan@serveraddr -p 20022 -X

でsshログインし、

hogesan@serveraddr$ xeyes &
hogesan@serveraddr$ gedit /etc/hosts &

このようにプログラムを起動するだけでよい。

昔は xhost だとか xauth だとか面倒な許可設定をいろいろ行っていたが、今はsshでXプロトコルをフォワードして一発完了だろう。LANで使うのであれば暗号化は必要ないかもしれないが、暗号化せずにXを使うことの方がよっぽど手間がかかる。貧弱な環境でもないかぎり、これで問題は無い。

Linux Zaurus でX/Qtを起動して、そこにサーバマシンのアプリケーションを表示することも可能(不安定だが)。

Windowsクライアント+Linuxサーバ

Windows上にXのソフトを起動させるには、まずXサーバソフトウェアを起動させる必要がある。フリーウェアでのおすすめは、Xming ( http://freedesktop.org/wiki/Xming , http://sourceforge.net/projects/xming )だ。インストーラをダブルクリックしてインストールし、完了後にソフトウェアのアイコンをダブルクリックすることで簡単に起動できる。puttyをインストールするか聞かれるが、私のPCには既にインストールされていたので、一番下の「インストールしない」旨の項目を選択した。

他には、定番のCygwin ( http://cygwin.com/ ) もいいだろう。パッケージインストール時に「X11」を選択しておけば、Cygwin Bashシェル上で「startx」コマンドが実行できると思う。その場合、xmingと同様にタスクトレイにアイコンが表示される。ただ、本家linuxと違って、随分と不安定なのは覚悟した方がよい。

その後、puttyなどのsshクライアントを起動して接続を行う。puttyの場合は、接続→SSH→X11 の X11の、「X11フォワーディングを有効にする」のチェックを入れ、「Xディスプレイの場所」に「localhost:0.0」を入力。

設定の保存後にログインし、Xのアプリケーションを起動すれば、ウインドウが表示されるはずだ。

Windowsクライアント(ホスト)+VirtualBox?上のLinux(ゲスト)

最後に応用編だ。WindowsマシンにVirtualBox?がインストールされ、そのゲストOSとしてLinuxが起動しており、NAT接続されている場合に、そのLinuxのXアプリケーションの画面をWindows上にl表示してみよう。

工程は、上記「Windowsクライアント+Linuxサーバ」に、ポートフォワードの設定を加えたものとなる。

つまり、ローカル(ホストWindows)の、あるポートへの接続をゲストのLinuxの22番(デフォルトの場合)へ転送させることになる。

そのためには、ホストマシンのWindowsのコマンドプロンプトで以下のように実行すればよい。

cd "C:\Program Files\Sun\xVM VirtualBox"
VBoxManage setextradata "GuestLinuxBox" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP
VBoxManage setextradata "GuestLinuxBox" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22
VBoxManage setextradata "GuestLinuxBox" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 30022

なお、"GuestLinuxBox?" はゲストOSにつけた識別名であり、適宣読み替えること。

この後、putty等のsshクライアントで、アドレス「localhost」の「30022」ポートへ接続する。Xフォワーディングを有効にする設定を忘れないように。

接続ができたら、

$ xeyes &

などとタイプしてみると、Windowsマシン上にアプリケーションの窓が表示されるはずだ。