13.3. VNC ビューアー
vncviewer
は、グラフィカルユーザーインターフェイスを表示し、vncserver
をリモートで制御するプログラムです。
vncviewer
の操作では、エントリーを含むポップアップメニューがあり、これでフルスクリーンモードの切り替え、ビューアーの終了などの様々なアクションを実行します。また、ターミナルから vncviewer
を操作することもできます。vncviewer
のパラメーターのリストを表示するには、コマンドラインで vncviewer -h
を入力します。
13.3.1. VNC ビューアーのインストール
TigerVNC (vncviewer
) クライアントをインストールするには root
で以下のコマンドを発行します。
~]# yum install tigervnc
13.3.2. VNC サーバーへの接続
VNC サーバーを設定すると、VNC サーバーを任意の VNC ビューアーに接続できます。
SSH を使用した VNC サーバーへの接続
-
引数なしで
vncviewer
コマンドを入力すると、VNC Viewer: Connection Details
ユーティリティーが表示されます。接続する VNC サーバーを指定するよう要求されます。 必要な場合は、同じ画面への既存の VNC 接続の切断を回避するために、以下のようにデスクトップの共有を許可するオプションを選択します。
- ボタンを選択します。
-
Misc. (その他)
タブを選択します。 -
Shared (共有)
ボタンを選択します。 - OK を選択してメインメニューに戻ります。
接続するアドレスとディスプレイ番号を入力してください。
address:display_number
- Connect (接続) を押して VNC サーバー画面に接続します。
VNC パスワードを入力するよう求められます。これは、グローバルなデフォルトの VNC パスワードが設定されていない限り、ディスプレイ番号に対応するユーザーの VNC パスワードです。
VNC サーバーデスクトップを示すウィンドウが表示されます。これは通常のユーザーに表示されるデスクトップではなく、Xvnc デスクトップであることに注意してください。
CLI を使用した VNC サーバーへの接続
引数としてアドレスとディスプレイ番号を指定して、
viewer
コマンドを入力します。vncviewer address:display_number
ここで、address は
IP
アドレスまたはホスト名です。- VNC パスワードを入力して自分自身を認証します。これは、グローバルなデフォルトの VNC パスワードが設定されていない限り、ディスプレイ番号に対応するユーザーの VNC パスワードです。
- VNC サーバーデスクトップを示すウィンドウが表示されます。これは通常のユーザーに表示されるデスクトップではなく、Xvnc デスクトップであることに注意してください。
13.3.2.1. VNC のためのファイアウォールの設定
暗号化されていない接続を使用する場合は、firewalld
が接続を拒否する可能性があります。firewalld
が VNC パケットを通過させることを許可するには、TCP
トラフィックに特定のポートを開きます。-via
オプションを使用する場合、トラフィックは firewalld
においてデフォルトで有効な SSH
を介してリダイレクトされます。
VNC サーバーのデフォルトのポートは 5900 です。リモートデスクトップにアクセス可能なポートに到達するには、このデフォルトのポートとユーザーに割り当てられたディスプレイ番号の合計を計算します。たとえば、2 つ目のディスプレイは 2 + 5900 = 5902 のようになります。
ディスプレイ 0
から 3
については、以下で説明しているように service
オプションによって、VNC サービスの firewalld
のサポートを利用します。ディスプレイ番号が 3
よりも大きい場合は、firewalld でポートを開く で説明されているように、対応するポートを特別に開く必要があります。
firewalld での VNC サービスの有効化
firewalld
設定の情報を確認するには、以下のコマンドを実行します。~]$ firewall-cmd --list-all
特定のアドレスからのすべての VNC 接続を許可するには、以下のコマンドを実行します。
~]# firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.122.116" service name=vnc-server accept' success
ここで変更する内容は、システムの再起動後は維持されないことに注意してください。ファイアウォールを永続的に変更するには、コマンドに
--permanent
オプションを繰り返し追加してください。ファイアウォールのリッチ言語コマンドの使用方法は Red Hat Enterprise Linux 7 Security Guide (Red Hat Enterprise Linux 7 セキュリティーガイド) を参照してください。上記の設定を確認するには、以下のコマンドを使用します。
~]# firewall-cmd --list-all public (default, active) interfaces: bond0 bond0.192 sources: services: dhcpv6-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: rule family="ipv4" source address="192.168.122.116" service name="vnc-server" accept
特定のポートまたはポートの範囲を開くには、--add-port
オプションを使用して firewall-cmd
コマンドラインツールに使用します。たとえば、VNC 画面 4
では、TCP
トラフィックに対してポート 5904
を開く必要があります。
firewalld でポートを開く
パブリックゾーンで
TCP
トラフィックのポートを開くには、root
で以下のようにコマンドを発行します。~]# firewall-cmd --zone=public --add-port=5904/tcp success
パブリックゾーンに対して現在開かれているポートを表示するには、以下のコマンドを発行します。
~]# firewall-cmd --zone=public --list-ports 5904/tcp
ポートは、firewall-cmd --zone=zone --remove-port=number/protocol
コマンドを使用して削除できます。
ここで変更する内容は、システムの再起動後は維持されないことに注意してください。ファイアウォールを永続的に変更するには、コマンドに --permanent
オプションを繰り返し追加してください。firewalld
でのポートのオープンおよびクローズの詳細については、Red Hat Enterprise Linux 7 Security Guide を参照してください。
13.3.3. SSH を使用した VNC サーバーへの接続
VNC は、通信への攻撃に対するセキュリティーがないクリアテキストネットワークプロトコルです。通信をセキュアにするには、-via
オプションを指定してサーバークライアント接続を暗号化します。これにより、VNC サーバーとクライアントとの間に SSH
トンネルが作成されます。
VNC サーバークライアント接続を暗号化するコマンドの形式は以下のとおりです。
vncviewer -via user@host:display_number
例13.1 -via オプションの使用
SSH
を使用して VNC サーバーに接続するには、以下のようなコマンドを入力します。~]$ vncviewer -via USER_2@192.168.2.101:3
- プロンプトが表示されたら、パスワードを入力し、Enter を押して確認します。
- リモートデスクトップのウィンドウが画面に表示されます。
VNC アクセスの制限
暗号化した接続のみを選択する場合は、systemd.service
ファイルの ExecStart 行で -localhost
オプションを使用すると、暗号化されていない接続を完全に回避できます。
ExecStart=/usr/sbin/runuser -l user -c "/usr/bin/vncserver -localhost %i"
これにより、vncserver
は、-via
オプションの結果として SSH
を使用して送信されたローカルホストおよびポート転送された接続以外の接続を許可しません。
SSH
の使用の詳細は、12章OpenSSH を参照してください。