LinuxからMacへX11 Forwarding
VMware Fusion内のDebian LinuxのX11 GUI出力をMacにフォワードする方法についてのメモ。別に仮想マシンを使っていなくてもこの方法でできると思う。
背景
VMware内のDebianを使って研究用のプログラムの開発をしたかった。そのプログラムではAspectJを使っている。AspectJはGUIベースのインストーラでインストールしなければならない(CUIでもできるかもしれないけど、やり方がわからない)。だけど、Debian/VMにはGUI環境は一切インストールしていない(したくない)ので、最低限のX11パッケージのみをインストールし、SSHのX11 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 LinuxでX11 Forwardingしたときは、xhostなんて実行した覚えがないんだよね。ディストリビューションが特別な設定をしていたんだろうか?