9 VNCサービスの構成
この章では、仮想ネットワーク・コンピューティング(VNC)サーバーによるグラフィカル・デスクトップへのリモート・アクセスを有効にする方法について説明します。
VNCについて
仮想ネットワーク・コンピューティング(VNC)はネットワーク上でグラフィカル・デスクトップを共有するシステムです。VNCクライアント(ビューア)はリモート・システム上でVNCサーバーによって共有されるデスクトップに接続し、制御できます。VNCは独立したプラットフォームのため、任意のオペレーティング・システムでVNCクライアントを使用してVNCサーバーに接続できます。VNCはグラフィカル・ツールを使用したリモート管理を可能にします。
デフォルトでは、VNCクライアントとVNCサーバーの間のすべての通信は保護されていません。VNC通信はSSHトンネルを使用して保護できます。SSHトンネルを使用すると、オープンにする必要のあるファイアウォール・ポートの数も削減できます。Oracleでは、SSHトンネルの使用が推奨されています。
VNCサーバーの構成
VNCサーバーを構成するには:
-
tigervnc-server
パッケージをインストールします。sudo yum install tigervnc-server
-
VNCユーザーのためのVNC環境を作成します。
システム上の各VNCデスクトップが、特定のユーザーとしてVNCサーバーを実行します。このユーザーはユーザー名、およびパスワードまたはSSHキー(VNCデスクトップにSSHトンネルを介してアクセスする場合)を使用してシステムにログインできる必要があります。
vncpasswdコマンドを使用して、VNCデスクトップのパスワードを作成します。パスワードは
root
ではなく、VNCサーバーを実行するユーザーが次のように作成する必要があります。su - vncuser vncpasswd Password: password Verify: password
パスワードは6文字以上にする必要があります。パスワードが8文字を超える場合、最初の8文字のみが認証に使用されます。パスワードの難読化バージョンは、vncpasswdコマンドでファイル名を指定しないかぎり、
$HOME/.vnc/passwd
に格納されます。 -
システム上で使用可能にする各VNCデスクトップに、サービス・ユニット構成ファイルを作成します。
-
次のように、
vncserver@.service
テンプレート・ファイルをコピーします。cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@\:display.service
前のコマンドでは、displayは、
1
から始まる、VNCデスクトップの一意の表示番号です。バックスラッシュ文字(\
)を使用して、コロン(:
)文字をエスケープします。それぞれのVNCデスクトップはユーザー・アカウントと関連付けられています。複数のVNCデスクトップがある場合に管理しやすくするため、サービス・ユニット構成ファイルの名前に、次のようにVNCユーザーの名前を含めることができます。
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver-vncuser@\:display.service
-
サービス・ユニット構成ファイルを編集します。
構成ファイル内の次のセクションは、このサンプル・エントリのようになります。vncuserを実際のVNCユーザー名に置き換えます。
[Service] Type=forking WorkingDirectory=/home/vncuser User=vncuser Group=vncuser # Clean any existing files in /tmp/.X11-unix environment ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' ExecStart=/usr/bin/vncserver %i PIDFile=/home/vncuser/.vnc/%H%i.pid ExecStop=/usr/bin/vncserver -kill %i
オプションで、VNCサーバーのコマンドライン引数を追加できます。次の例では、VNCサーバーは
localhost
からの接続のみを受け入れ、VNCデスクトップはローカルまたはSSHトンネルを介してのみアクセスできることを意味します。ウィンドウのサイズは、geometry
フラグを使用してデフォルトの1024x768から640x480に変更されます。ExecStart=/usr/bin/vncserver %i -localhost -geometry 640x480 PIDFile=/home/vncuser/.vnc/%H%i.pid
-
-
VNCデスクトップを開始します。
-
systemd
に構成ファイルをリロードさせます。sudo systemctl daemon-reload
-
それぞれのVNCデスクトップで、サービスを開始し、システムの再起動後に開始するようサービスを構成します。そのサービスに関連付けるようにサービス・ユニット構成ファイル内で指定した、ユーザー名と表示番号を必ず使用してしてください。次に例を示します。
sudo systemctl start vncserver-vncuser@\:display.service sudo systemctl enable vncserver-vncuser@\:display.service
ノート:
サービス・ユニット構成ファイルに変更を加える場合は、構成ファイルをリロードし、サービスを再起動する必要があります。
-
-
VNCデスクトップへのアクセスを許可するようにファイアウォールを構成します。
ユーザーがSSHトンネルを介してVNCデスクトップにアクセスし、SSHサービスがシステム上で有効な場合は、ファイアウォールで追加のポートを開く必要はありません。SSHはデフォルトで有効になっています。SSHの有効化の詳細は、Oracle® Linux: OpenSSHを使用したリモート・システムへの接続を参照してください。
ユーザーがVNCデスクトップに直接アクセスする場合は、各デスクトップで必要なポートを開く必要があります。必要なポートは、VNCデスクトップ・サービスの表示番号を5900 (デフォルトのVNCサーバー・ポート)に加算して計算できます。表示番号が1の場合、必要なポートは5901であり、表示番号が67の場合、必要なポートは5967です。
ポート5900から5903を開くには、次のコマンドを使用できます。
sudo firewall-cmd --zone=zone --add-service=vnc-server sudo firewall-cmd --zone=zone --add-service=vnc-server --permanent
ポート5967など、追加のポートを開くには、次のコマンドを使用します。
sudo firewall-cmd --zone=zone --add-port=5967/tcp sudo firewall-cmd --zone=zone --add-port=5967/tcp --permanent
-
VNCデスクトップを構成します。
デフォルトでは、VNCサーバーはユーザーのデフォルトのデスクトップ環境を実行します。これはVNCデスクトップ・サービスが開始したときに自動的に作成される、VNCユーザーの
$HOME/.vnc/xstartup
ファイルで制御されます。システムをインストールしたときに(ベース環境として最小インストールを選択した場合など)デスクトップ環境をインストールしていない場合、次のコマンドを使用してインストールできます。
sudo yum groupinstall "server with gui"
インストールが完了したら、systemctl get-defaultコマンドを使用して、デフォルトのシステム状態が
multi-user.target
(マルチユーザー・コマンドライン環境)であることを確認します。systemctl set-defaultコマンドを使用して、デフォルトのシステム状態をリセットするか、必要に応じてgraphical.target
(マルチユーザー・グラフィック環境)に変更します。$HOME/.vnc/xstartup
ファイルはVNCデスクトップを起動したときにXアプリケーションを実行することを指定するシェル・スクリプトです。たとえば、KDE Plasmaワークスペースを実行するには、次のようにファイルを編集できます。#!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS #exec /etc/X11/xinit/xinitrc startkde &
ユーザーの
$HOME/.vnc/xstartup
ファイルを変更する場合は、変更内容を反映するためVNCデスクトップを再起動する必要があります。sudo systemctl restart vncserver-vncuser@\:display.service
詳細は、vncserver(1)
、Xvnc(1)
、およびvncpasswd(1)
の各マニュアル・ページを参照してください。
VNCデスクトップへの接続
Oracle Linux 7システムでは、任意のVNCクライアントを使用してVNCデスクトップに接続できます。次の例は、TigerVNCクライアントへの指示を示します。クライアントへの指示を適応させます。
-
TigerVNCクライアント(vncviewer)をインストールします。
sudo yum install tigervnc
-
TigerVNCクライアントを開始し、デスクトップに接続します。
VNCデスクトップに直接接続するには、TigerVNCクライアントを開始し、
host:display
を入力してVNCサーバーのホスト名またはIPアドレス、および接続するVNCデスクトップの表示番号を指定します。または、VNCデスクトップをvncviewerコマンドの引数として指定できます。次に例を示します。vncviewer myhost.example.com:1
SSHトンネルを介してVNCデスクトップに接続するには、vncviewerコマンドで-viaオプションを使用してSSH接続のユーザー名とホストを指定し、
localhost:display
を使用してVNCデスクトップを指定します。次に例を示します。vncviewer -via vncuser@myhost.example.com localhost:67
詳細は、
vncviewer(1)
マニュアル・ページを参照してください。