このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Linux】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/0
sshd_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 sshd
2.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.0
localhost
: 自分自身を指します。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 xeyes
xeyes
を終了させます。
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操作が可能になります。今後、より高度な設定やセキュリティ強化を行うことで、さらに実用的な環境を構築することができます。