動かざることバグの如し

近づきたいよ 君の理想に

sshでログインしたサーバーのGUIアプリをMacで起動させる方法

毎回忘れるのでメモ

環境

  • サーバー側 linux OS sshができていること
  • 今回はテストで xeyesを動かすのでそれもインストールされていること
  • クライアント側 MacOS

今回は検証用なのでセキュリティは一切考慮しない

やりたいこと

通常、sshでは接続先にGUI環境があってもウィンドウをクライアント側で表示する事はできない。

が、ForwardX11機能を使うとかんたんにできる。

サーバー側の設定

sshされる側のLinuxサーバーの方。今回はX11Forwardingを使うのでsshがそれを有効化している必要がある。

  • X11Forwarding yesであること
  • X11UseLocalhost noであること
  • AddressFamily anyまたはinetであること

設定の確認は以下のコマンドで

$ sshd -T | grep -E '(x11forwarding|x11uselocalhost|addressfamily)'
addressfamily any
x11forwarding yes
x11uselocalhost no

/etc/ssh/sshd_config を編集して systemctl restart sshd

クライアント側の設定

Mac側の話。XQuartzというアプリをインストールする。

XQuartz

インストールしたらXQuartzを起動して、以下変更

  • 「接続の認証」をOFF
  • 「ネットワーク・クライアントからの接続」をON

以下のようにはなるはず

f:id:thr3a:20201115032845p:plain

~/.ssh/configにて以下追記

Host 接続したいサーバーのホスト名
  ForwardX11 yes
  ForwardX11Trusted yes

あとはsshして

$ DISPLAY=MAC側のIPアドレス:0 xeyes

するとMac側に目のウィンドウが表示される。やったね