Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第13章 TigerVNC

TigerVNC (Tiger Virtual Network Computing) は、グラフィカルデスクトップシェアリングのシステムで、他のコンピューターのリモート制御を可能にします。

TigerVNC は、クライアントサーバープリンシパルで機能します。サーバーはその出力 (vncserver) を共有し、クライアント (vncviewer) はサーバーに接続します。

注記

以前の Red Hat Enterprise Linux ディストリビューションとは異なり、Red Hat Enterprise Linux 7 の TigerVNC は、その設定に systemd システム管理デーモンを使用します。/etc/sysconfig/vncserver 設定ファイルに代わり、/etc/systemd/system/vncserver@.service が使用されるようになりました。

13.1. VNC Server

vncserver は、VNC (Virtual Network Computing) デスクトップを起動するユーティリティーです。適切なオプションで Xvnc を実行し、VNC デスクトップでウィンドウマネージャーを起動します。vncserver ユーザーは、どこからでも任意の数のクライアントがアクセスできるマシン上で、別々のセッションを並行して実行できます。

13.1.1. VNC サーバーのインストール

TigerVNC サーバーをインストールするには、root 権限で以下のコマンドを実行します。

~]# yum install tigervnc-server

13.1.2. VNC サーバーの設定

VNC サーバーでは、表示、ネットワークアドレス、ポート、セキュリティーの設定などに対するオプションのパラメーターを使用して、1 人または複数のユーザー用の画面を起動するよう設定できます (ユーザーのシステムがシステムに存在する場合)。

1 人のユーザー用に VNC サーバーの設定

  1. /etc/systemd/system/vncserver@.service という名前の設定ファイルが必要になります。このファイルを作成するには、/usr/lib/systemd/system/vncserver@.service ファイルを root でコピーします。

    ~]# cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@.service

    systemd は、オンデマンドでメモリー内に適切な名前が付けられたインスタンスを自動的に作成し、サービスファイル内の '%i' はディスプレイ番号に置き換えられるため、ファイル名に表示番号を含める必要はありません。単一ユーザーの場合は、ファイルの名前を変更する必要がありません。複数ユーザーの場合は、たとえば、ユーザー名をファイル名に追加して、各ユーザーに対して一意な名前が付けられたサービスファイルが必要です。詳しくは 「2 人のユーザー用に VNC サーバーの設定」 を参照してください。

  2. /etc/systemd/system/vncserver@.service を修正して、USER を実際のユーザー名で置き換えます。その他の行は、そのままにしておきます。

    ExecStart=/usr/bin/vncserver_wrapper <USER> %i
    注記

    VNC デスクトップのデフォルトサイズは 1024x768 です。

    ユーザーの VNC セッションは、~/.vnc/config ファイルを使用してさらに設定できます。

    たとえば、VNC ウィンドウサイズを変更するには、次の行を追加します。

    geometry= <WIDTH> x <HEIGHT>

  3. 変更を保存します。
  4. 変更を直ちに反映させるには、以下のコマンドを実行します。

    ~]# systemctl daemon-reload
  5. 設定ファイルで定義されたユーザー用のパスワードを設定します。最初に root から USER に切り替える必要があることに注意してください。

    ~]# su - USER
    ~]$ vncpasswd
    Password:
    Verify:
    重要

    保存されたパスワードは暗号化されていません。パスワードファイルへのアクセスが可能であれば、誰でもプレーンテキストのパスワードを見ることができます。

「VNC サーバーの起動」に進みます。

13.1.2.1. 2 人のユーザー用に VNC サーバーの設定

同一マシンで複数のユーザーを設定する場合は、ユーザーごとに異なるテンプレートタイプのサービスファイルを作成します。

  1. たとえば、vncserver-USER_1@.servicevncserver-USER_2@.service の 2 つのサービスファイルを作成します。これら 2 つのファイルで、USER を正しいユーザー名に置き換えます。
  2. 両方のユーザーでパスワードを設定します。

    ~]$ su - USER_1
    ~]$ vncpasswd
    Password:
    Verify:
    ~]$ su - USER_2
    ~]$ vncpasswd
    Password:
    Verify:

13.1.3. VNC サーバーの起動

サービスを起動もしくは有効にするには、コマンドで直接ディスプレイ番号を指定します。1 人のユーザー用に VNC サーバーの設定 の上記で設定したファイルはテンプレートとして機能し、そこでは %isystemd によりディスプレイ番号に置き換えます。有効な番号を用いて、以下のコマンドを実行します。

~]# systemctl start vncserver@:display_number.service

また、システム起動時に自動的にサービスが開始するようにすることもできます。そうすると、ログイン時に vncserver が自動的に開始されます。root で以下のコマンドを発行します。

~]# systemctl enable vncserver@:display_number.service

この時点で、他のユーザーは VNC ビューアープログラムを使用して、定義されたディスプレイ番号とパスワードで VNC サーバーに接続できます。グラフィカルデスクトップがインストールされている場合は、そのデスクトップのインスタンスが表示されます。これは、ターゲットマシンで現在表示されているものと同じインスタンスではありません。

13.1.3.1. ユーザー 2 人および 2 つの別個のディスプレイ用に VNC サーバーの設定

vncserver-USER_1@.service および vncserver-USER_2@.service という 2 つの設定済み VNC サーバーで、異なるディスプレイ番号を有効にできます。たとえば、以下のコマンドでは、USER_1 の VNC サーバーがディスプレイ 3 で起動し、USER_2 の VNC サーバーがディスプレイ 5 で起動することになります。

~]# systemctl start vncserver-USER_1@:3.service
~]# systemctl start vncserver-USER_2@:5.service

13.1.4. GDM 用の XDMCP を使用した xinetd ベースの VNC セットアップ

GDM 用の X Display Manager Control Protocol (XDMCP) を使用した xinetd ベースの VNC セットアップは、主にシンクライアントで設定されているクライアントシステムに有益なセットアップです。セットアップ後、クライアントは GDM ログインウィンドウにアクセスでき、システムアカウントにログインできます。設定の前提条件は、gdmvnc -server &、および xinetd パッケージがインストールされていることです。

~]# yum install gdm tigervnc tigervnc-server xinetd

サービス xinetd を有効化する必要があります。

~]# systemctl enable xinetd.service

システムのデフォルトターゲットユニットは graphical.target になっているはずです。現在設定されているデフォルトターゲットユニットを取得するには、以下を使用します。

~]# systemctl get-default

以下を使用して、デフォルトターゲットユニットを変更できます。

~]# systemctl set-default target_name

GDM ログインウィンドウへのアクセスとログイン

  1. /etc/gdm/custom.conf 設定ファイルを編集して、GDM を設定して XDMCP を有効にします。

    [xdmcp]
    Enable=true
  2. 以下のコンテンツで /etc/xinetd.d/xvncserver というファイルを作成します。

    service service_name
    {
    disable = no
    protocol = tcp
    socket_type = stream
    wait = no
    user = nobody
    server = /usr/bin/Xvnc
    server_args = -inetd -query localhost -once -geometry selected_geometry -depth selected_depth securitytypes=none
    }

    server_args セクションでは、-query localhost オプションにより、xdmcp セッションに対して各 Xvnc インスタンスのクエリー localhost が作成されます。-depth オプションは、作成する VNC デスクトップの─深さ (ビット) を指定します。使用できる値は、8、15、16、および 24 です。その他の値は、アプリケーションの予測できない動作を引き起こします。

  3. /etc/services ファイルを編集して、サービスを定義します。これを行うには、以下の内容を /etc/services ファイルに追加します。

    # VNC xinetd GDM base
    service_name 5950/tcp
  4. 設定の変更が反映されるようにするには、マシンを再起動します。

    あるいは、以下を実行します。init レベルを 3 に変更し、5 に戻して、gdm をリロードします。

    # init 3
    # init 5

    gdm が UDP ポート 177 をリッスンしていることを確認します。

    # netstat -anu|grep 177
    udp    0   0 0.0.0.0:177         0.0.0.0:*

    xinetd サービスを再起動します。

    ~]# systemctl restart xinetd.service

    xinetd サービスが新しいサービスを読み込んだことを確認します。

    # netstat -anpt|grep 595
    tcp    0   0 :::5950           :::*            LISTEN   3119/xinetd
  5. vncviewer コマンドを使用して設定をテストします。

    # vncviewer localhost:5950

    コマンドは、パスワードが求められない localhost に対して VNC セッションを起動します。GDM ログイン画面が表示され、有効なユーザー名とパスワードでシステムのユーザーアカウントにログインできます。それから、リモート接続で同じテストを実行できます。

その設定に対してファイアウォールを設定します。ファイアウォール設定ツールを実行し、TCP ポート 5950 を追加してシステムへの接続を許可します。

~]# firewall-cmd --permanent --zone=public --add-port=5950/tcp
~]# firewall-cmd --reload

13.1.5. VNC セッションの終了

vncserver サービスの有効化と同様に、システム開始時に自動的にサービスの起動を無効にできます。

~]# systemctl disable vncserver@:display_number.service

または、システムの実行中に、以下のコマンドを root で発行すると、サービスを停止できます。

~]# systemctl stop vncserver@:display_number.service