LinuxからMacへX11 Forwarding

VMware Fusion内のDebian LinuxX11 GUI出力をMacフォワードする方法についてのメモ。別に仮想マシンを使っていなくてもこの方法でできると思う。

背景

VMware内のDebianを使って研究用のプログラムの開発をしたかった。そのプログラムではAspectJを使っている。AspectJGUIベースのインストーラでインストールしなければならない(CUIでもできるかもしれないけど、やり方がわからない)。だけど、Debian/VMにはGUI環境は一切インストールしていない(したくない)ので、最低限のX11パッケージのみをインストールし、SSHX11 Fowardingを利用してインストーラMac OS側で起動してインストールすることにした。
最低限のX11パッケージをインストールするところでも、ちょっとした工夫をしたんだけど、それについては後日まとめる。

方法

前準備として、Debian:/etc/ssh/sshd_configを確認する。「X11Forwarding」で検索し、「yes」になっていることを確認。たぶん標準でyesになっている。
1. Mac OS側でTerminal上で「xhost」コマンドを実行。X11 Forwardingを行うマシン(ここではDebian/VM)のIPを調べ、「+」記号をつけて引数に与える。IPが192.168.9.129の場合、たとえばこんな感じ。

$ xhost +192.168.9.129

2. Mac OSからsshで対象マシンにログイン。このとき「-X」オプションをつけて、X11 Forwardingを有効にする。

$ ssh -X 192.168.9.129

3. sshしたDebian上でDISPLAY環境変数をセット。X11出力をフォワードする先のマシン(ここではMac OS)のIPを調べ、次のようにセットする。Mac OSのIPは192.168.9.1とした。

$ export DISPLAY=192.168.9.1:0

4. X11 GUI出力するプログラムを実行。僕の場合、AspectJのインストールだったので、こんな感じ。

$ java -jar aspectj-1.6.1.jar

まとめ

X11 Forwarding自体あまりしないので、xhostコマンドを実行するのをさっぱり忘れ、ちょっとはまってしまった。だけど、以前Linux to LinuxX11 Forwardingしたときは、xhostなんて実行した覚えがないんだよね。ディストリビューションが特別な設定をしていたんだろうか?