第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 サーバーの設定
/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 サーバーの設定」 を参照してください。/etc/systemd/system/vncserver@.service
を修正して、USER を実際のユーザー名で置き換えます。その他の行は、そのままにしておきます。ExecStart=/usr/bin/vncserver_wrapper <USER> %i
注記VNC デスクトップのデフォルトサイズは 1024x768 です。
ユーザーの VNC セッションは、
~/.vnc/config
ファイルを使用してさらに設定できます。たとえば、VNC ウィンドウサイズを変更するには、次の行を追加します。
geometry= <WIDTH> x <HEIGHT>
- 変更を保存します。
変更を直ちに反映させるには、以下のコマンドを実行します。
~]#
systemctl daemon-reload
設定ファイルで定義されたユーザー用のパスワードを設定します。最初に
root
から USER に切り替える必要があることに注意してください。~]# su - USER ~]$
vncpasswd
Password: Verify:重要保存されたパスワードは暗号化されていません。パスワードファイルへのアクセスが可能であれば、誰でもプレーンテキストのパスワードを見ることができます。
「VNC サーバーの起動」に進みます。
13.1.2.1. 2 人のユーザー用に VNC サーバーの設定
同一マシンで複数のユーザーを設定する場合は、ユーザーごとに異なるテンプレートタイプのサービスファイルを作成します。
-
たとえば、
vncserver-USER_1@.service
とvncserver-USER_2@.service
の 2 つのサービスファイルを作成します。これら 2 つのファイルで、USER を正しいユーザー名に置き換えます。 両方のユーザーでパスワードを設定します。
~]$ su - USER_1 ~]$
vncpasswd
Password: Verify: ~]$ su - USER_2 ~]$vncpasswd
Password: Verify:
13.1.3. VNC サーバーの起動
サービスを起動もしくは有効にするには、コマンドで直接ディスプレイ番号を指定します。1 人のユーザー用に VNC サーバーの設定 の上記で設定したファイルはテンプレートとして機能し、そこでは %i
が systemd
によりディスプレイ番号に置き換えます。有効な番号を用いて、以下のコマンドを実行します。
~]# 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 ログインウィンドウにアクセスでき、システムアカウントにログインできます。設定の前提条件は、gdm、vnc -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 ログインウィンドウへのアクセスとログイン
/etc/gdm/custom.conf
設定ファイルを編集して、GDM を設定して XDMCP を有効にします。[xdmcp] Enable=true
以下のコンテンツで
/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 です。その他の値は、アプリケーションの予測できない動作を引き起こします。/etc/services
ファイルを編集して、サービスを定義します。これを行うには、以下の内容を/etc/services
ファイルに追加します。# VNC xinetd GDM base service_name 5950/tcp
設定の変更が反映されるようにするには、マシンを再起動します。
あるいは、以下を実行します。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
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