Macへ X Window Systemで GUI表示してみてみた


■ 目的

サーバー管理するにあたって、通常CLIですが、時々GUIも使いたくなります。
そのときはVNCを使うのですが、X Window もやってみたくなります。
ということで、Oracle CloudのLinixコンピュートのGUI表示をMACでX Windowしてみてみます。

■ 構成イメージ

OCIへInternet接続したOn-Premises環境にあるMac Bookから、Xしてみてみます

■ Mac側設定

● Mac 用の X11 について

X11 は Mac に付属しなくなりましたが、X11 のサーバとクライアントのライブラリは、XQuartz プロジェクトから入手できます。

・XQuartz プロジェクト: https://support.apple.com/ja-jp/HT201341

● XQuartz ダウンロード

xquartz.org から、XQuartz をダウンロード

・xquartz.org: https://www.xquartz.org/

●xquartzインストール

1) .dmgファイル実行
ダウンロードした、.dmgファイルをクリックして、XQuartz.pkgをクリック

2) ようこそXQuartz インストーラーへ画面
[続ける]をクリック

3) 大切な情報画面
[続ける]をクリック

4) 使用許諾契約画面
使用許諾契約内容を確認し、[続ける]をクリック

5) ソフトウェア使用許諾の条件に同意する必要があります。画面
使用許諾契約に合意できれば、[同意する]をクリック

5) インストールの種類画面
[インストール]をクリック

6)インストール画面
〜インストール中〜

7) ポップアップ
You will need to log out and log back in to make XQuartz your default X11 server
内容を確認し、[OK]をクリック

8) インストールが完了しました画面

■OCI Linuxコンピュート側設定

リモートアクセスするLinuxマシンに、X Windowできるように設定

● xorg-x11パッケージインストール

xorg-x11パッケージがインストールされていない場合、
以下2つを yumコマンドでインストール

・xorg-x11-xauth.x86_64 
・xorg-x11-server-utils.x86_64
[root@oci-inst01 opc]# yum install -y xorg-x11-xauth.x86_64 xorg-x11-server-utils.x86_64

    読み込んだプラグイン:langpacks, ulninfo
    依存性の解決をしています
    --> トランザクションの確認を実行しています。
    ---> パッケージ xorg-x11-server-utils.x86_64 0:7.7-20.el7 を インストール
    --> 依存性の処理をしています: libXxf86misc.so.1()(64bit) のパッケージ: xorg-x11-server-utils-7.7-20.el7.x86_64
    --> 依存性の処理をしています: libXrandr.so.2()(64bit) のパッケージ: xorg-x11-server-utils-7.7-20.el7.x86_64
    --> 依存性の処理をしています: libXinerama.so.1()(64bit) のパッケージ: xorg-x11-server-utils-7.7-20.el7.x86_64
    --> 依存性の処理をしています: libXi.so.6()(64bit) のパッケージ: xorg-x11-server-utils-7.7-20.el7.x86_64
    ---> パッケージ xorg-x11-xauth.x86_64 1:1.0.9-1.el7 を インストール
    --> トランザクションの確認を実行しています。
    ---> パッケージ libXi.x86_64 0:1.7.9-1.el7 を インストール
    ---> パッケージ libXinerama.x86_64 0:1.1.3-2.1.el7 を インストール
    ---> パッケージ libXrandr.x86_64 0:1.5.1-2.el7 を インストール
    ---> パッケージ libXxf86misc.x86_64 0:1.0.3-7.1.el7 を インストール
    --> 依存性解決を終了しました。

    依存性を解決しました

    ==========================================================================================
    Package                      アーキテクチャー
                                                バージョン            リポジトリー       容量
    ==========================================================================================
    インストール中:
    xorg-x11-server-utils        x86_64        7.7-20.el7            ol7_latest        178 k
    xorg-x11-xauth               x86_64        1:1.0.9-1.el7         ol7_latest         29 k
    依存性関連でのインストールをします:
    libXi                        x86_64        1.7.9-1.el7           ol7_latest         40 k
    libXinerama                  x86_64        1.1.3-2.1.el7         ol7_latest         13 k
    libXrandr                    x86_64        1.5.1-2.el7           ol7_latest         27 k
    libXxf86misc                 x86_64        1.0.3-7.1.el7         ol7_latest         19 k

    トランザクションの要約
    ==========================================================================================
    インストール  2 パッケージ (+4 個の依存関係のパッケージ)

    総ダウンロード容量: 305 k
    インストール容量: 629 k
    Downloading packages:
    (1/6): libXi-1.7.9-1.el7.x86_64.rpm                                |  40 kB  00:00:00
    (2/6): libXrandr-1.5.1-2.el7.x86_64.rpm                            |  27 kB  00:00:00
    (3/6): libXxf86misc-1.0.3-7.1.el7.x86_64.rpm                       |  19 kB  00:00:00
    (4/6): libXinerama-1.1.3-2.1.el7.x86_64.rpm                        |  13 kB  00:00:00
    (5/6): xorg-x11-server-utils-7.7-20.el7.x86_64.rpm                 | 178 kB  00:00:00
    (6/6): xorg-x11-xauth-1.0.9-1.el7.x86_64.rpm                       |  29 kB  00:00:00
    ------------------------------------------------------------------------------------------
    合計                                                      4.2 MB/s | 305 kB  00:00:00
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
    インストール中          : libXrandr-1.5.1-2.el7.x86_64                              1/6
    インストール中          : libXxf86misc-1.0.3-7.1.el7.x86_64                         2/6
    インストール中          : libXinerama-1.1.3-2.1.el7.x86_64                          3/6
    インストール中          : libXi-1.7.9-1.el7.x86_64                                  4/6
    インストール中          : xorg-x11-server-utils-7.7-20.el7.x86_64                   5/6
    インストール中          : 1:xorg-x11-xauth-1.0.9-1.el7.x86_64                       6/6
    検証中                  : libXi-1.7.9-1.el7.x86_64                                  1/6
    検証中                  : libXinerama-1.1.3-2.1.el7.x86_64                          2/6
    検証中                  : libXxf86misc-1.0.3-7.1.el7.x86_64                         3/6
    検証中                  : libXrandr-1.5.1-2.el7.x86_64                              4/6
    検証中                  : xorg-x11-server-utils-7.7-20.el7.x86_64                   5/6
    検証中                  : 1:xorg-x11-xauth-1.0.9-1.el7.x86_64                       6/6

    インストール:
    xorg-x11-server-utils.x86_64 0:7.7-20.el7      xorg-x11-xauth.x86_64 1:1.0.9-1.el7

    依存性関連をインストールしました:
    libXi.x86_64 0:1.7.9-1.el7                libXinerama.x86_64 0:1.1.3-2.1.el7
    libXrandr.x86_64 0:1.5.1-2.el7            libXxf86misc.x86_64 0:1.0.3-7.1.el7

    完了しました!

● xeyes インストール

X動作確認用 GUIツール xeyesをインストール
これによりxclockなどもインストールされます

[root@tokyo-inst01 opc]# yum install xeyes
    読み込んだプラグイン:langpacks, ulninfo
    ol7_UEKR5                                                          | 2.8 kB  00:00:00
    ol7_addons                                                         | 2.8 kB  00:00:00
    ol7_developer                                                      | 2.8 kB  00:00:00
    ・・・
    インストール:
    xorg-x11-apps.x86_64 0:7.7-7.el7

    依存性関連をインストールしました:
    dejavu-fonts-common.noarch 0:2.33-6.el7      dejavu-sans-fonts.noarch 0:2.33-6.el7
    fontconfig.x86_64 0:2.13.0-4.3.el7           libICE.x86_64 0:1.0.9-9.el7
    libSM.x86_64 0:1.2.2-2.el7                   libX11.x86_64 0:1.6.7-2.el7
    libX11-common.noarch 0:1.6.7-2.el7           libXau.x86_64 0:1.0.8-2.1.el7
    libXaw.x86_64 0:1.0.13-4.el7                 libXcursor.x86_64 0:1.1.15-1.el7
    libXext.x86_64 0:1.3.3-3.el7                 libXfixes.x86_64 0:5.0.3-1.el7
    libXft.x86_64 0:2.3.2-2.el7                  libXmu.x86_64 0:1.1.2-2.el7
    libXpm.x86_64 0:3.5.12-1.el7                 libXrender.x86_64 0:0.9.10-1.el7
    libXt.x86_64 0:1.1.5-3.el7                   libXxf86vm.x86_64 0:1.1.4-1.el7
    libfontenc.x86_64 0:1.1.3-3.el7              libxcb.x86_64 0:1.13-1.el7
    libxkbfile.x86_64 0:1.0.9-3.el7

    完了しました!

● sshd設定

・sshd_config設定
以下を設定
(#はコメントアウトなので、はずしましょ)

[root@oci-inst01 ssh]# vi /etc/ssh/sshd_config
    ・・・
    X11Forwarding yes
    X11DisplayOffset 10
    X11UseLocalhost no
    ・・・

・sshd_config設定確認

[root@oci-inst01 ssh]# cat /etc/ssh/sshd_config | grep X11
    X11Forwarding yes
    X11DisplayOffset 10
    X11UseLocalhost no
    #X11UseLocalhost yes

・sshd 再起動

[root@oci-inst01 ssh]# systemctl restart sshd

■ MACからOCI LinuxコンピュートへX window実行

● sshタイムアウト回避接続状態継続設定

ssh接続がタイムアウトしないように homeディレクトリにある.ssh/configファイルへ以下3行追加
また、MAC OSの Update などで xauthパス が変更されることがあり、ssh -X ~ で接続すると、次のような Warning が出力されることがあります。その場合、.ssh/configファイル へ XAuthLocationパラメーターを設定します

Warning: untrusted X11 forwarding setup failed: xauth key data not generated

1) xauthパス確認

$ which xauth
    /opt/X11/bin/xauth

2).ssh/config設定

mac-book:~ user$ vi ~/.ssh/config
    Host *
    ServerAliveInterval 60
    TCPKeepAlive yes
    XAuthLocation /opt/X11/bin/xauth

● XQuartz でX起動

1) XQuartzターミナル起動
Launchpad の [その他]の中にある XQuartzアイコンをクリックし、ターミナル起動

ターミナル起動が起動します

1) OCIインスタンスへssh接続
ssh接続は、X11 forwarding機能を有効にする -X オプションをつけて実行
※xtermでのペーストは、オプション+左クリック

mac-book:~ user$ ssh -X -i id_rsa [email protected]
    Last login: Mon Aug 10 12:50:03 2020

2) DISPLAY環境変数確認
DISPLAY環境変数が自動登録されていることを確認
自動登録されていない場合は、sshd等の設定を見直します

[opc@oci-inst01 ~]$ env | grep DISPLAY
    DISPLAY=10.0.0.2:11.0

3) xclock実行
xeyesコマンドで、xeyes の GUIが表示されることを確認

[opc@oci-inst01 ~]$ xeyes 

xeyes実行できず、error: "Can't open display"等が表示された場合は、ポート6000が空いているかFirewall等の環境見直しをします

● iTerm でX起動

XQuartzがインストールされていれば、ターミナルはiTermでもX起動できます。
iTermがインストールされていない場合、https://iterm2.com/から iTerm2をインストール

1) iTerm起動

2) OCIインスタンスへssh接続
ssh接続は、X11 forwarding機能を有効にする -X オプションをつけて実行
※xtermでのペーストは、オプション+左クリック

mac-book:~ user$ ssh -X -i id_rsa [email protected]
    Last login: Mon Aug 10 12:55:12 2020

2) DISPLAY環境変数確認
DISPLAY環境変数が接続したインスタンスのIPで自動登録されていることを確認
自動登録されていない場合は、sshd等の設定を見直します

[opc@oci-inst01 ~]$ env | grep DISPLAY
    DISPLAY=10.0.0.2:11.0

3) xeyes実行
xeyesコマンドで、xeyes の GUIが表示されることを確認
xeyesで、XQuartzが自動起動されます