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

# ■ 目的
サーバー管理するにあたって、通常 CLI(Command Line Interface)ですが、時々 GUI(Graphical User Interface)も使いたくなります。
そのときは VNCを使うのですが、X Window もやってみたくなります。
ということで、Linuxコンピュートの GUI表示を MacBook で X Window アクセスしてみてみます。

# ■ 構成イメージ
Oracle Cloud Infrastructure (OCI) へ Internet接続した On-Premises 環境にある Mac Book から、xeyesなど X Windowアクセスしてみてみます
<img width="1224" alt="構成Internet_xeyes.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/91e4b16b-63ac-3351-e727-b028d6423903.png">


# ■ Mac側設定

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

・XQuartz プロジェクト: https://support.apple.com/ja-jp/HT201341
<img width="1086" alt="MAC-HP01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/016f06a1-0ae7-bdcf-0723-53c869a6632d.png">


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

・xquartz.org: https://www.xquartz.org/
<img width="1154" alt="MAC-HP02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/cdb94852-5a09-84e5-3226-038aecbe9b61.png">


## ● xquartzインストール
**1) .dmgファイル実行**
ダウンロードした、.dmgファイルをクリックして、XQuartz.pkgをクリック
<img width="882" alt="MAC-HP03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/4caad920-7c7d-6966-0da2-623f20a4a80e.png">



**2) ようこそXQuartz インストーラーへ画面**
[続ける]をクリック
<img width="732" alt="MAC-HP04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/763e90f7-d96c-98f7-c401-c9889b5f4604.png">


**3) 大切な情報画面**
[続ける]をクリック
<img width="732" alt="MAC-HP05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/76c30346-d2d4-3d2d-1018-6e74616a14df.png">


**4) 使用許諾契約画面**
使用許諾契約内容を確認し、[続ける]をクリック
<img width="732" alt="MAC-HP06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/e9c0a988-3567-c16d-07fb-07996a870189.png">


**5) ソフトウェア使用許諾の条件に同意する必要があります。画面**
使用許諾契約に合意できれば、[同意する]をクリック
<img width="732" alt="MAC-HP07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/a7c0b320-48e1-62f2-b705-b43636b5bfd7.png">


**5) インストールの種類画面**
[インストール]をクリック
<img width="732" alt="MAC-HP08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/e3ce0b0c-aa02-33ac-7448-674046fd0162.png">


**6)インストール画面**
〜インストール中〜
<img width="732" alt="MAC-HP09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/9464cf36-8e74-254b-aca1-c6740ccaee97.png">


**7) ポップアップ**
You will need to log out and log back in to make XQuartz your default X11 server
内容を確認し、[OK]をクリック
<img width="532" alt="MAC-HP11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/167abf75-2df6-f764-475b-bd1fd63823e3.png">


**8) インストールが完了しました画面**
<img width="732" alt="MAC-HP12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/d5b9b0a8-4214-d3fa-484f-fc8769260ec0.png">





# ■ OCI Linuxコンピュート側設定
リモートアクセスするLinuxマシンに、X Windowできるように設定


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

	・xorg-x11-xauth.x86_64 
	・xorg-x11-server-utils.x86_64

```shell
[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などもインストールされます

### ・ Linux8以降
```
[root@tokyo-inst01 ~]# dnf config-manager --enable ol8_codeready_builder
[root@tokyo-inst01 ~]# dnf install xorg-x11-apps
	Oracle Linux 8 BaseOS Latest (x86_64)                                                                                  282 kB/s | 4.3 kB     00:00
	Oracle Linux 8 Application Stream (x86_64)                                                                             351 kB/s | 4.5 kB     00:00
	Oracle Linux 8 CodeReady Builder (x86_64) - Unsupported                                                                112 MB/s |  12 MB     00:00
	Oracle Linux 8 Addons (x86_64)                                                                                         237 kB/s | 3.5 kB     00:00
	Dependencies resolved.
	=======================================================================================================================================================
	 Package                                 Architecture               Version                            Repository                                 Size
	=======================================================================================================================================================
	Installing:
	 xorg-x11-apps                           x86_64                     7.7-21.el8                         ol8_codeready_builder                     334 k
	Installing dependencies:
	 libXaw                                  x86_64                     1.0.13-10.el8                      ol8_appstream                             194 k
	 xorg-x11-fonts-misc                     noarch                     7.5-19.el8                         ol8_appstream                             5.8 M
	 xorg-x11-xbitmaps                       noarch                     1.1.1-13.el8                       ol8_appstream                              42 k
	
	Transaction Summary
	=======================================================================================================================================================
	Install  4 Packages
	
	Total download size: 6.3 M
	Installed size: 8.5 M
	Is this ok [y/N]: y
	Downloading Packages:
	(1/4): xorg-x11-xbitmaps-1.1.1-13.el8.noarch.rpm                                                                       527 kB/s |  42 kB     00:00
	(2/4): libXaw-1.0.13-10.el8.x86_64.rpm                                                                                 1.3 MB/s | 194 kB     00:00
	(3/4): xorg-x11-fonts-misc-7.5-19.el8.noarch.rpm                                                                        22 MB/s | 5.8 MB     00:00
	(4/4): xorg-x11-apps-7.7-21.el8.x86_64.rpm                                                                             1.8 MB/s | 334 kB     00:00
	-------------------------------------------------------------------------------------------------------------------------------------------------------
	Total                                                                                                                   24 MB/s | 6.3 MB     00:00
	Running transaction check
	Transaction check succeeded.
	Running transaction test
	Transaction test succeeded.
	Running transaction
	  Preparing        :                                                                                                                               1/1
	  Installing       : xorg-x11-xbitmaps-1.1.1-13.el8.noarch                                                                                         1/4
	  Installing       : xorg-x11-fonts-misc-7.5-19.el8.noarch                                                                                         2/4
	  Running scriptlet: xorg-x11-fonts-misc-7.5-19.el8.noarch                                                                                         2/4
	  Installing       : libXaw-1.0.13-10.el8.x86_64                                                                                                   3/4
	  Installing       : xorg-x11-apps-7.7-21.el8.x86_64                                                                                               4/4
	  Running scriptlet: xorg-x11-apps-7.7-21.el8.x86_64                                                                                               4/4
	  Verifying        : libXaw-1.0.13-10.el8.x86_64                                                                                                   1/4
	  Verifying        : xorg-x11-fonts-misc-7.5-19.el8.noarch                                                                                         2/4
	  Verifying        : xorg-x11-xbitmaps-1.1.1-13.el8.noarch                                                                                         3/4
	  Verifying        : xorg-x11-apps-7.7-21.el8.x86_64                                                                                               4/4
	
	Installed:
	  libXaw-1.0.13-10.el8.x86_64    xorg-x11-apps-7.7-21.el8.x86_64    xorg-x11-fonts-misc-7.5-19.el8.noarch    xorg-x11-xbitmaps-1.1.1-13.el8.noarch
	
	Complete!
```


### ・ Linux7まで
```shell
[root@tokyo-inst01 ~]# 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設定**
以下を設定
(#はコメントアウトなので、はずしましょ)

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

**・ sshd_config設定確認**

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


**・ sshd 再起動**

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



# ■ MACからOCI LinuxコンピュートへX window実行
## ● sshタイムアウト回避接続状態継続設定
ssh接続がタイムアウトしないように homeディレクトリにある.ssh/configファイルへ以下３行追加
また、MAC OSの Update などで xauthパス が変更されることがあり、ssh -X ~ で接続すると、次のような Warning が出力されることがあります。その場合、.ssh/configファイル へ XAuthLocationパラメーターを設定します

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

**1) xauthパス確認**

```shell
$ which xauth
	/opt/X11/bin/xauth
```

**2）.ssh/config設定**

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

## ● XQuartz でX起動

**1) XQuartzターミナル起動**
Launchpad の　[その他]の中にある XQuartzアイコンをクリックし、ターミナル起動
<img width="1680" alt="MAC-HP14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/4d68c62e-9829-4b5e-7cbf-bb4466766b91.png">

ターミナル起動が起動します
<img width="512" alt="00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/89e8020f-fcf8-155d-22fe-76b96ce00579.png">


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

```shell-session
mac-book:~ user$ ssh -X -i id_rsa opc@1.2.3.4
	Last login: Mon Aug 10 12:50:03 2020
```


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

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

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


```shell
[opc@oci-inst01 ~]$ xeyes 
```

xeyes実行できず、error: "Can't open display"等が表示された場合は、ポート6000が空いているかFirewall等の環境見直しをします
<img width="481" alt="xeyes01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/c8afdece-e79d-e0a3-2581-c26ab4857057.png">


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

**1) iTerm起動**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/e5b23cd7-51af-2f39-a18b-e537846a2672.png)


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

```shell-session
mac-book:~ user$ ssh -X -i id_rsa opc@1.2.3.4
	Last login: Mon Aug 10 12:55:12 2020
```


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

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

**4) xeyes実行**
xeyesコマンドで、xeyes の GUIが表示されることを確認
xeyesで、XQuartzが自動起動されます
![iTERMでxeyes03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/b2817a6e-4f7b-54f7-9599-eb4f45dba362.png)





# ■ 参考
 ・ [Mac 用の X11 について](https://support.apple.com/ja-jp/HT201341)
 ・ [XQuartz プロジェクト](www.xquartz.org) 
 ・ [iTerm2 - macOS Terminal Replacement](https://www.google.com/search?client=firefox-b-d&q=iterm2)
 ・ [How to Install xeys Linux8](https://forums.oracle.com/ords/apexds/post/missing-xorg-x11-apps-xclock-in-ol8-2-6858)
 ・ [X Window System](https://ja.wikipedia.org/wiki/X_Window_System)