1. 概要
リモートサーバ(Linuxとか)のGUIをローカル(Mac)に表示しよう。
2. Macでの作業
まずMac側の準備を行います。
2.1. XQuartzのインストール
Mac用のX Window SystemであるXQuartzをインストールします。
なお、Lion以前の古いOS(Lion, Snow Leopard, Leopard)には標準でX11が入っているためインストール不要のようです。
Apple サポートで案内されている通り、 XQuartz-x.x.xx.dmg
をダウンロードしインストールします。
もしくは以下のようにbrewでもインストールできます。
$ brew cask install xquartz
インストール直後はDISPLAY環境変数は設定されていません。
$ echo $DISPLAY
$
いったんMacからログアウトしてログインすると設定されます。
(左上のリンゴマーク->xxxをログアウト
からログアウトする)
$ echo $DISPLAY
/private/tmp/com.apple.launchd.qeR8i7Bf4G/org.macosforge.xquartz:0
$
3. リモートサーバ(Linuxとか)での作業
次にリモートサーバ側の準備を行います。
3.1. sshdの設定
Ubuntuなどのリモートサーバ側のsshdの設定を行います。
以下のように設定しsshdを再起動しておきます。
$ sudo vim /etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost no
$ sudo systemctl restart sshd
4. Macからリモートサーバにsshする
準備が整ったところで、GUIを表示させてみましょう。
iterm2などのターミナルでMacからUbuntsなどのリモートサーバにsshでログインします。
ログインしたらfirefox
やxeyes
など、GUIを持つアプリケーションを起動するコマンドを叩きます。
# Ubuntuなどのリモートサーバにログイン
$ ssh -XY my-ubuntu
# Ubuntuなどのリモートサーバで
# 何でも良いのでGUIを持つアプリケーションを起動してみる
# 例えばxeyesとか
$ xeyes
# 例えばfirefoxとか
$ firefox
Mac側でXQuartzのウィンドウが起動し、GUIが表示されたら成功です。
5. 補足
なおMac側で以下のように設定しておくと-XY
オプションは不要になります。
$ vim ~/.ssh/config
Host *
ForwardX11 yes
ForwardX11Trusted yes
上記例のようにHostを *
とすると、全てのホストに効きますので、効かせたくないホストにも効くことに注意が必要です。
システム全体で共通の設定としたい場合、ユーザーごとに~/.ssh/
配下で設定を行うのではなく、
/etc/ssh/ssh_config
の ForwardX11
や ForwardX11Trusted
を yes
に設定する方法もあります。
特定のホストのみに設定したい場合は以下のように記述できます。
影響範囲が狭いほうがいい場合が多いと思うのでこちらがおすすめです。
$ vim ~/.ssh/config
Host my-ubuntu
HostName 192.168.1.100
User loft
ForwardX11 yes
ForwardX11Trusted yes