このページで解説している内容は、以下の 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

環境準備

この演習で使用する環境を準備するには、以下のコンテンツを参考にしてみてください。

【Linux】SSH実践演習の準備(仮想マシンのクローン作成)

このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。 【Linux】SSH実践演習の準備(仮想マシンのクローン作成) ここでは、「SSH実践演習…

【Linux】SSH実践演習①(ホスト名とIPアドレスの確認と変更)

このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。 【Linux】SSH実践演習①(ホスト名とIPアドレスの確認と変更) SSH実践演習では、以下…

CentOS 7のクローンを2台用意

ホスト名とIPアドレスを以下のように設定します。

マシン名ホスト名IPアドレス役割
CentOS1xserver192.168.1.173/24Xサーバ
CentOS2xclient192.168.1.174/24Xクライアント
ホスト名とIPアドレス
ネットワークアダプターの設定

 仮想マシンのネットワークアダプターを「ブリッジアダプター」に変更します。これにより、ホストマシンと同じネットワーク上で通信が可能になります。

演習手順

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」コマンドを実行します。

 X11Forwardingyesになっていることを確認します。もしnoになっている場合は、yesに変更します。ここでは、yesとなっているため、次の手順「2」に進みます。

[root@CentOS1 ~]# cat /etc/ssh/sshd_config | grep X11Forwarding
X11Forwarding yes
#	X11Forwarding no

 X11Forwardingyesに変更した場合は、次のコマンドを実行して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アドレス。

    オプションの説明

    オプション説明
    -XX11フォワーディングを有効にする
    -Y信頼できるX11フォワーディングを有効にする
    オプションの説明

    補足: -Yオプションは-Xよりも信頼性が高く、特定の環境ではこちらを使用することが推奨されます。

    3.Xクライアント側の設定確認

    SSH接続が成功した後、X11フォワーディングが正しく設定されているか確認します。

    DISPLAY環境変数の確認

    DISPLAY環境変数を確認します。

    ・「echo $DISPLAY」コマンドを実行します。

    [user01@CentOS2 ~]$ echo $DISPLAY
    localhost:10.0
    • localhost: 自分自身を指します。
    • 10: ディスプレイ番号。sshd_configX11DisplayOffsetの値に基づきます。
    • 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_configX11Forwardingを有効にし、SSHサービスを再起動しました。
      • SSH接続ssh -Xオプションを使用して、XクライアントからXサーバへ接続しました。
      • 環境変数の確認DISPLAY環境変数が正しく設定されていることを確認しました。
      • GUIアプリケーションの実行xeyesを実行し、X11フォワーディングが正常に機能していることを確認しました。
      • プロセスの確認と終了: 実行中のxeyesプロセスを確認し、適切に終了させました。

       これらの手順を通じて、CentOS 7におけるX11フォワーディングの基本的な設定と操作方法が理解できたかと思います。X11フォワーディングを活用することで、リモートサーバ上の強力なリソースを効率的に利用しつつ、柔軟なGUI操作が可能になります。今後、より高度な設定やセキュリティ強化を行うことで、さらに実用的な環境を構築することができます。