Windows X Server: リモートLinux GUIアプリケーションのためのX11転送の設定

# はじめに

X ServerはLinuxサーバー上でグラフィカルなアプリケーションとのやりとりが必要な場合に不可欠です。特に、コマンドラインインターフェースだけでは不足するか、実用的でない場合、X Serverを活用することでSSH接続を介してリモートLinuxサーバーとローカルマシンをシームレスにつなげ、快適なグラフィカルな体験を実現できます。

以下は、X Serverが必要になる典型的なシナリオです：

1. **リモートでのGUIアプリケーションの実行：** SSHを通じてLinuxサーバーにアクセスし、WebLogicやJenkinsなどのGUIアプリケーションを実行する際に重要です。

2. **開発とテスト：** Linuxサーバー上で開発作業を行っており、開発プロセス中にグラフィカルなアプリケーションをテストまたは実行する場合に活用されます。

3. **管理タスク：** 一部のシステム管理ツールにはグラフィカルなインターフェースがあり、X Serverを使用してこれらのツールをリモートで効果的に利用できます。ネットワーク設定の構成、ユーザーの管理、システムリソースの監視などがこれに該当します。

4. **データの視覚化：** データの視覚化ツールや科学的なアプリケーションを使用する場合、X Serverを介してこれらの視覚化を表示し、対話する必要があります。

5. **Linuxデスクトップ環境へのアクセス：** リモートでLinuxデスクトップ環境全体にアクセスしたい場合、X Serverを使用してリモートLinuxサーバーのグラフィカルインターフェースをローカルマシンに転送できます。

# X Server
今回は、XmingとVcXsrvの2つのX Serverをご紹介いたします。どちらもTera TermやPuTTYなどのSSHターミナルと組み合わせて使用可能です。お好みに合わせて、どちらかを選んでください。

1. **Xming:**
    - **SSH:** Xmingは安全なSSH接続を提供し、リモートサーバーへの安全なアクセスを実現します。
    - **Server Management:** Xmingはサーバーの管理を容易にし、グラフィカルなユーザーインターフェースを通じてサーバーの設定を行えます。
    - **Terminal Tools:** Xmingには便利なターミナルツールが含まれており、効率的な作業が可能です。
    - **Server Configuration and Automation:** サーバーの構成と自動化に関してもXmingは柔軟かつ効果的なオプションを提供しています。

2. **VcXsrv:**
    - **SSH:** VcXsrvもSSH接続をサポートし、セキュアなリモートアクセスを提供します。
    - **Server Management:** VcXsrvは直感的な管理オプションを備え、サーバーの操作を簡素化します。
    - **Terminal Tools:** 効率的な作業をサポートするターミナルツールもVcXsrvに含まれています。
    - **Server Configuration and Automation:** サーバーの構成と自動化においてもVcXsrvは優れた機能を提供しています。

これらのX Serverは、Tera TermやPuTTYと組み合わせて使用することで、リモート環境でのGUIアプリケーションの実行や管理作業をスムーズかつ効果的に行うことができます。

# SSHターミナルの設定
Tera TermとPuttyを利用している場合はターミナルのSSH転送の設定が必要です。

## Tera Termの設定

TeraTermを立ち上げて、
設定⇒ssh設定⇒SSHポート転送を開き、
「リモートの（X)アプリケーションをローカルのXサーバに表示する」にチェック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/0f0a4fae-9a93-0037-2c91-6ad088ab1582.png)



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/0e780cc2-851d-cc09-d464-a6827a7152fd.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/c44f9cba-c978-4983-27c5-ad80955ba6b4.png)




設定の保存をして、再度立ち上げれば、X11転送の設定が完了。（TeraTermの再起動が必要）


## PuTTY の設定
TeraTermを立ち上げて
「SSH」⇒「X11」⇒を開き、
「X11 フォワーディングを有効にする」にチェック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/d2d0d021-58d0-27eb-6c16-d37de103634c.png)


# OSの設定

## minimalからgraphical user interface (GUI)に変更
- すでにGUIがインストールされているか確認する。
OSがminimalの場合はGUIに変更する必要のため、GUIのインストールを行う。
```
dnf groupinfo "Server with GUI"
```



- GUIのグループパッケージを確認する
```
dnf group list
```

```
#Output
Updating Subscription Management repositories.
Updating Subscription Management repositories.
Last metadata expiration check: 0:12:40 ago on Fri 01 May 2020 08:58:11 PM IST.
Available Environment Groups:
   Server with GUI
   Server
   Minimal Install
   KDE Plasma Workspaces
   Custom Operating System
   Virtualization Host
Installed Environment Groups:
   Workstation
Installed Groups:
   Development Tools
Available Groups:
   Legacy UNIX Compatibility
   Container Management
   .NET Core Development
   Graphical Administration Tools
   Headless Management
   Network Servers
   RPM Development Tools
   Scientific Support
   Security Tools
   Smart Card Support
   System Tools
   Fedora Packager
   Xfce
```
- GUIのグループパッケージをインストールする
```
dnf groupinstall "Server with GUI"
```

- default targetをgraphical modeに変更する
```
systemctl set-default graphical.target
```

- 再起動する
```
reboot
```

## X11Forwardingの有効化

- X11Forwardingパラメータを確認するために、次のコマンドを使用します。

```
cat /etc/ssh/sshd_config | grep -i X11Forwarding
```
出力がないか、もしくは `X11Forwarding no` と表示された場合は、`sshd_config` ファイル内に以下の行を追加します。ファイルに既に含まれている場合は、値が `yes` に設定されていることを確認します。
```
X11Forwarding yes
```
- sshd_configファイルを開くために次のコマンドを実行します。

```
vi /etc/ssh/sshd_config
```

/etc/ssh/sshd_configファイルで値を変更した場合は、ssh サービスを再起動します。

```
systemctl restart ssh
```

これで X11 フォワーディングが有効になり、`sshd_config` ファイル内の `X11Forwarding` パラメータが正しく設定されていることが確認できます。


## .bash_profile 設定

1. `.bash_profile` ファイルを編集するために、次のコマンドを実行します。

    ```bash
    vi ~/.bash_profile
    ```

2. ファイル内で必要な変更を行います。
    例: windowsのIPアドレスが 192.168.1.100 の場合、次の行を追加します。
    ```bash
    export DISPLAY=192.168.1.100:0
    ```

    この設定は、X サーバーが実行されている IP アドレスを指定します。これにはXmingなどのXサーバが動作れているWindows端末のIPアドレスを使用します。

3. 変更を保存してファイルを閉じます。

4. `.bash_profile` ファイルの変更を反映するために、次のコマンドを実行します。

    ```bash
    source ~/.bash_profile
    ```

これで、X11 フォワーディングが有効になり、`.bash_profile` ファイルが正しく設定されていることが確認できます。なお、X サーバーの IP アドレスは、Windows 上で実行されている X サーバー（例: Xming）のものを指定します。

# X Serverのインストールと設定


## Xmingのインストールと設定


- ダウンロードした「Xming-x-x-x-x-setup.exe」ファイルを実行する。


- Xmingのセットアップウィザードが立ち上がたら「Next >」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/019212c3-0936-c1d4-412b-9aabc21cc54f.png)


- インストール先を指定し、「Next >」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/ebec0cf0-6e45-d88a-0e7f-a326dd8ffeba.png)

- デフォルトの状態で「Next >」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/3d842ac3-918e-343e-1cb2-36d0274502f7.png)


- スタートメニューに作成するかを聞かれるので「Next >」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/b04dc76f-a319-7aea-a648-0946b8662c7f.png)


- 以下をチェックして、「Next >」をクリックする。
Create a desktop icon for XLaunch
Associate XLaunch.exe with the .xlaunch file extension
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/2812c145-f282-3104-0c73-90662e9a5c14.png)
- 「Install」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/83219e0c-0375-150f-3d7a-6d07fc6161e3.png)


- 「Launch Xming」のチェックを外して「Finish」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/383f8ec4-80b5-2ccb-dc32-391b83bcd4e5.png)


Xmingフォントのインストール
- ダウンロードした「Xming-fonts-x-x-x-xx-setup.exe」を実行する。


- Xmingをインストールしたフォルダを指定して「Next >」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/4b9c4e2c-645e-a256-125b-3178dd0bad7b.png)


- 「はい」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/c5fcc373-b691-03b2-95de-61b42f213d3c.png)


- デフォルトの状態で「Next >」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/7c242000-39f0-e82f-38a8-850a5759b860.png)


- スタートメニューに作成するか聞かれるので「Next >」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/e23aed46-e02a-5729-fe6c-e9a4e3f51a95.png)


- 「Install」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/301f767b-75bb-526f-dd86-fcafd8767865.png)


- 「Finish」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/86ac7678-0462-e6ab-cd29-802380568860.png)

- 「スタート」⇒「Xming」⇒「XLaunch」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/c91a408e-4795-683c-8900-29f6a6cd4ddc.png)


- 「Multiple Windows」を選択し、「次へ >」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/6010f803-ef10-1b62-6a05-e9c5e3e5f58b.png)


- 「Start no Client」を選択し、「次へ >」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/eaaa7f9f-ab43-2872-f225-eb2ded3e376b.png)


- 「Clipboard」、「No Access Control」を選択し、「次へ >」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/e306f949-e313-a8e3-40b5-10cb14f6b4f5.png)


- 「完了」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/6143fe94-c4c0-f0d6-4c22-46ea7e810e08.png)


- 画面下部のタスクバーに「Xming Server」のアイコンが表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/27dd37ce-411b-40ae-f1a2-47e1114963ab.png)


- SSHターミナルでログインし、GUIアプリケーションを起動する。
    ```
    # firefox &
    ```
## VcXsrvのインストールと設定
- ダウンロードしたインストーラーのファイルを実行する。
- VcXsrvのセットアップが立ち上げたら「Next >」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/4a2b5244-a4bc-1115-b93b-fbe14b60dea4.png)

- 「Install」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/c7a2ed38-306a-19e4-c81d-b1923e7e939f.png)

- インストールが完了しましたら「Close」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/339edb06-29e6-d74c-8836-0bea8eee6a24.png)


- 「スタート」⇒「VcXsrv」⇒「XLaunch」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/1d8bc3d0-75bb-a22b-3ef4-d685379763bd.png)

- 「次へ >」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/a692006f-4033-6e31-043d-3a81ac7096e6.png)
- 「次へ >」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/debde54e-8523-cf23-a3f6-c1a29b61580b.png)

- 「Disable access control」をチェックし、「次へ >」をクリックする。
**チェック済み（有効）:** 「Disable access control」にチェックを入れると、外部のシステムがXサーバに接続できるようになります。これは、リモートサーバからローカルマシンにGUIアプリケーションを表示する必要がある場合に便利ですが、どんなシステムからでもXサーバに接続できる可能性があり、セキュリティリスクが発生する可能性があります。
**未チェック（無効）:** 「Disable access control」にチェックを入れないと、Xサーバへのアクセスが制限され、セキュリティが向上します。ただし、SSHを介した適切なX11フォワーディングを設定していない限り、リモートサーバからローカルマシンにGUIアプリケーションを表示する際に問題が発生する可能性があります。

    セキュリティとユースケースに合わせてオプションを選択してください。一般的にはセキュリティを重視し、信頼されたサーバからのみGUIアプリケーションを表示する際は、アクセス制御を有効にすることが推奨されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586946/204387ca-9307-4a47-901f-077dd3258924.png)

- SSHターミナルでログインし、GUIアプリケーションを起動する。
    ```
    # firefox &
    ```
# まとめ

この記事では、Linuxサーバー上でGUIアプリケーションを利用するためのX Serverの導入と設定を紹介しました。X ServerはSSH接続を通じてリモートLinuxサーバーとローカルマシンを結びつけ、グラフィカルな操作を可能にします。

記事では、X Serverが必要な典型的なケースや、XmingとVcXsrvの2つのX Serverを紹介しました。これらはSSHターミナルと組み合わせて利用でき、それぞれ異なる特長があります。

具体的な設定手順もシンプルに解説しましたが、異なるOSの場合は手順が異なることに留意してください。記事を参考にしながら、各環境に合わせて操作してみてください。

# 関連タグ
###### `X11Forward`　`X11転送`  `X11` `X-Server for windows` `SSH` `TeraTerm` `Linux` `Windows` `Xming` `VcXsrv` `RedHat`