このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Linux】X11フォワーディング(CentOS 7)

X11フォワーディング(CentOS 7)
X11フォワーディングは、リモートサーバ上で動作するGUIアプリケーションを、ローカルマシン上で表示・操作するための技術です。これにより、物理的に離れた場所にあるサーバのリソースを活用しつつ、ユーザーフレンドリーなインターフェースを享受することが可能になります。ここでは、CentOS 7を使用したX11フォワーディングの設定方法と実践的な演習を通じて、その基本的な操作手順を詳しく解説します。

X11プロトコルとは
X11プロトコルは、ネットワークを介してGUIアプリケーションを表示・操作するための標準的なプロトコルです。これにより、アプリケーションの描画命令がクライアント(表示側)からサーバ(実行側)へ送信され、実際の描画はサーバ側で行われます。
X11フォワーディングの利点
- リモート管理の効率化: GUIアプリケーションをリモートサーバ上で動作させながら、ローカルマシンで操作できるため、管理作業が容易になります。
- セキュアな通信: SSHを利用することで、通信が暗号化され、安全にデータをやり取りできます。
- 柔軟なリソース活用: ローカルマシンの性能に依存せず、リモートサーバの強力なハードウェアリソースを活用できます。
X11フォワーディングの構成要素
- Xサーバ: GUIを表示する側。通常はローカルマシンがXサーバとして機能します。
- Xクライアント: GUIアプリケーションを実行する側。リモートサーバーがXクライアントとして動作します。
- SSH: セキュアな通信プロトコルとして、X11フォワーディングを実現するために使用されます。
X11フォワーディング演習(CentOS 7)

演習概要
この演習では、以下の構成でX11フォワーディングを設定・実行します。
- CentOS1(Xサーバ): IPアドレス:
192.168.1.173/24 - CentOS2(Xクライアント): IPアドレス:
192.168.1.174/24
環境準備
この演習で使用する環境を準備するには、以下のコンテンツを参考にしてみてください。
CentOS 7のクローンを2台用意
ホスト名とIPアドレスを以下のように設定します。
| マシン名 | ホスト名 | IPアドレス | 役割 |
|---|---|---|---|
| CentOS1 | xserver | 192.168.1.173/24 | Xサーバ |
| CentOS2 | xclient | 192.168.1.174/24 | Xクライアント |
ネットワークアダプターの設定
仮想マシンのネットワークアダプターを「ブリッジアダプター」に変更します。これにより、ホストマシンと同じネットワーク上で通信が可能になります。

演習手順
1.Xサーバ側のSSH設定確認
X11フォワーディングを行うためには、Xサーバ側(CentOS1)のSSH設定ファイルでX11Forwardingが有効になっている必要があります。
rootユーザーに切り替えます。
・「su -」コマンドを実行します。
[user01@CentOS1 ~]$ su -
パスワード:
最終ログイン: 2024/09/06 (金) 01:50:48 JST日時 pts/0sshd_configファイルの定義内容を確認します。
・「cat /etc/ssh/sshd_config | grep X11Forwarding」コマンドを実行します。
X11Forwardingがyesになっていることを確認します。もしnoになっている場合は、yesに変更します。ここでは、yesとなっているため、次の手順「2」に進みます。
[root@CentOS1 ~]# cat /etc/ssh/sshd_config | grep X11Forwarding
X11Forwarding yes
# X11Forwarding no X11Forwardingをyesに変更した場合は、次のコマンドを実行してSSHサーバを再起動して設定を反映させます。
・「systemctl restart sshd」コマンドを実行します。
[root@CentOS1 ~]# systemctl restart sshd2.Xサーバ側からのSSH接続
Xサーバ(CentOS1)からXクライアント(CentOS2)にX11フォワーディングを有効にして接続します。
・「ssh -X user01@192.168.1.174」コマンドを実行します。
[root@CentOS1 ~]# ssh -X user01@192.168.1.174
user01@192.168.1.174's password:
Last login: Fri Sep 6 23:32:46 2024 from 192.168.1.173
[user01@CentOS2 ~]$ -Xオプション: X11フォワーディングを有効にします。user01: CentOS2のユーザー名。192.168.1.174: CentOS2のIPアドレス。
オプションの説明
| オプション | 説明 |
|---|---|
-X | X11フォワーディングを有効にする |
-Y | 信頼できるX11フォワーディングを有効にする |
補足: -Yオプションは-Xよりも信頼性が高く、特定の環境ではこちらを使用することが推奨されます。
3.Xクライアント側の設定確認
SSH接続が成功した後、X11フォワーディングが正しく設定されているか確認します。
DISPLAY環境変数の確認
DISPLAY環境変数を確認します。
・「echo $DISPLAY」コマンドを実行します。
[user01@CentOS2 ~]$ echo $DISPLAY
localhost:10.0localhost: 自分自身を指します。10: ディスプレイ番号。sshd_configのX11DisplayOffsetの値に基づきます。0: スクリーン番号。通常は0が使用されます。
注意点
DISPLAY変数が空の場合、X11フォワーディングが正しく設定されていません。トラブルシューティングを行う必要があります。
4.GUIアプリケーションの実行
X11フォワーディングが正常に動作していることを確認するため、簡単なGUIアプリケーションを実行します。
・「xeyes &」コマンドを実行します。
xeyesとは簡単なGUIアプリケーションで、目が画面上を動きます。X11フォワーディングの動作確認に適しています。
[user01@CentOS2 ~]$ xeyes &&: バックグラウンドで実行するためのオプションです。
5.表示の確認
CentOS1側(Xサーバ)の画面にxeyesウィンドウが表示されます。

6.Xクライアント側のプロセス確認
xeyesが正しく実行されているか確認します。
・「ps -ef | grep xeyes」コマンドを実行します。
xeyesプロセスが表示されていることを確認します。x
xeyesプロセスが実行されています。これは、xeysがXクライアントであるCentOS2側で動作していることを意味します。
[user01@CentOS2 ~]$ ps -ef | grep xeyes
user01 3928 3763 0 23:44 pts/0 00:00:00 xeyes
user01 3967 3763 0 23:47 pts/0 00:00:00 grep --color=auto xeyesxeyesを終了させます。
xeyesウィンドウの[X]ボタンをクリックして終了させます。
7.X11フォワーディングの終了
SSHセッションを終了して、X11フォワーディングを停止します。
・「exit」コマンドを実行します。
[user01@CentOS2 ~]$ exit
ログアウト
Connection to 192.168.1.174 closed.
[root@CentOS1 ~]# まとめ
本演習では、CentOS 7環境におけるX11フォワーディングの設定と実行方法について学びました。以下に主要なポイントをまとめます。
- 環境準備: CentOS1をXサーバ、CentOS2をXクライアントとして設定し、ネットワーク接続を確立しました。
- SSH設定の確認: Xサーバ側の
sshd_configでX11Forwardingを有効にし、SSHサービスを再起動しました。 - SSH接続:
ssh -Xオプションを使用して、XクライアントからXサーバへ接続しました。 - 環境変数の確認:
DISPLAY環境変数が正しく設定されていることを確認しました。 - GUIアプリケーションの実行:
xeyesを実行し、X11フォワーディングが正常に機能していることを確認しました。 - プロセスの確認と終了: 実行中の
xeyesプロセスを確認し、適切に終了させました。
これらの手順を通じて、CentOS 7におけるX11フォワーディングの基本的な設定と操作方法が理解できたかと思います。X11フォワーディングを活用することで、リモートサーバ上の強力なリソースを効率的に利用しつつ、柔軟なGUI操作が可能になります。今後、より高度な設定やセキュリティ強化を行うことで、さらに実用的な環境を構築することができます。
