Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
適用先 openSUSE Leap 15.7

4 VNC によるリモートグラフィカルセッション Edit source

概要

VNC は Virtual Network Computing (仮想ネットワークコンピューティング) の略で、ネットワーク上離れたコンピュータを (シェルではなく) グラフィカルなデスクトップ経由でアクセスする機能を提供します。 VNC はプラットフォームに依存しない構造で、任意のオペレーティングシステムからアクセスする機能を提供します。本章では、 vncviewer や Remmina のようなデスクトップクライアントを利用して VNC サーバに接続する方法と、 VNC サーバの操作方法について説明しています。

openSUSE Leap では 2 種類の VNC セッションに対応しています。 1 つはワンタイムセッションと呼ばれ、クライアントからの接続が切れるまで 有効 となるセッションです。もう 1 つは永続セッションと呼ばれ、明示的に終了させるまでずっと 有効 であり続けるセッションです。

それぞれ異なるポートであれば、両方の種類のセッションを同じマシン内で同時に提供することもできます。ただし、既に開いているセッションの種類を変更することはできません。

4.1 vncviewer クライアント Edit source

重要
重要: 対応するディスプレイマネージャ

VNC 接続を受け付けるには、 XDMCP プロトコルに対応したディスプレイマネージャを使用する必要があります。 gdm , lxdm , lightdm は XDMCP に対応していますが、 KDE 5 の既定のディスプレイマネージャである sddm の場合は、 XDMCP に対応していません。ディスプレイマネージャを変更した場合は、現在の X セッションをログアウトしたあと、下記のコマンドで再起動を行ってください:

> sudo systemctl restart xdm.service

サーバ側で提供されている VNC サービスに接続するには、クライアントソフトウエアが必要です。 openSUSE Leap での既定は vncviewer で、 tigervnc パッケージ内に含まれています。

4.1.1 vncviewer コマンドラインを利用した接続 Edit source

VNC ビューアを起動してサーバ内のセッションに接続するには、下記のコマンドを使用します:

> vncviewer jupiter.example.com:1

ディスプレイ番号を指定する代わりに、コロンを 2 つ繋げてポート番号を指定することもできます:

> vncviewer jupiter.example.com::5901
注記
注記: ディスプレイ番号とポート番号について

VNC クライアント側で指定するディスプレイ番号やポート番号は、接続先のマシンで VNC サーバを設定する際に指定したディスプレイ番号やポート番号と同じ値を指定します。詳しくは 4.4項 「永続 VNC サーバセッションの設定」 をお読みください。

4.1.2 vncviewer GUI を利用した接続 Edit source

--listen を指定せずに vncviewer を実行するか、もしくは接続先のホストを指定して実行すると、詳細な接続設定を行うためのウインドウが表示されます。 VNC server の欄には、 4.1.1項 「vncviewer コマンドラインを利用した接続」 で指定しているような接続先を指定して、 Connect を押します。

接続の詳細設定を行うための vncviewer の画面
図 4.1: vncviewer

4.1.3 暗号化されていない接続に対する通知 Edit source

VNC プロトコルでは、様々な種類の暗号化接続 (注: パスワード認証とは全く異なり、通信そのものを暗号化して外部から内容を読み取られないようにする仕組みです) に対応しています。接続時に TLS を使用していないと、 VNC ビューアのウインドウタイトルに (Connection not encrypted!) (通信が暗号化されていません) というメッセージが表示されるようになっています。

4.2 Remmina: リモートデスクトップクライアント Edit source

Remmina はモダンで機能の豊富なリモートデスクトップクライアントです。 VNC, SSH, RDP, Spice などの各プロトコルに対応しています。

4.2.1 インストール Edit source

Remmina を使用するには、まず remmina パッケージをインストールする必要があります。インストールされていない場合は、下記のように実行して Remmina の VNC プラグインと共にインストールを行ってください:

# zypper in remmina remmina-plugin-vnc

4.2.2 メインウインドウ Edit source

Remmina を起動するには、 remmina と入力して実行します。

Remmina のメインウインドウ
図 4.2: Remmina のメインウインドウ

アプリケーションのメインウインドウには、保存されているリモートセッションの一覧が表示されます。ここに新しいリモートセッションを登録して保存しておくことができるほか、保存を行わずに素早く新しいセッションを開始したり、保存したセッションを開始したりすることもできます。このほか、 Remmina のグローバル設定を変更することもできます。

4.2.3 リモートセッションの追加 Edit source

新しいリモートセッションを追加して保存するには、メインウインドウの左上にある Add new session を押します。すると、 リモートデスクトップの設定 というウインドウが表示されます。

リモートデスクトップの設定
図 4.3: リモートデスクトップの設定

新しく追加するセッションプロファイルに対して、各種の情報を設定します。主なものは下記のとおりです:

名前

プロファイルの名前を指定します。名前はメインウインドウ内の一覧に表示されます。

プロトコル

リモートのセッションに接続する際に使用するプロトコル (例: VNC) を指定します。

サーバー

リモートサーバの IP アドレスまたはホスト名と、ディスプレイ番号を指定します。

ユーザー名, パスワード

リモートサーバに接続する際の認証情報を設定します。認証を行わない場合は、何も入力しないでください。

色数, 品質

お使いの環境の接続速度と品質にあわせて、最適な設定を選択してください。

高度な設定 タブを選択すると、より詳しいオプションを設定することができます。

ヒント
ヒント: 暗号化の無効化

クライアントとリモートのサーバの間で暗号化を行わない場合は、 暗号化を無効にする を選択してください。選択を行わないと、接続が失敗します。

SSH でトンネル接続するような場合や、認証オプションを設定する必要がある場合は、 SSH タブを選択してください。

設定が終わったら Save を押します。新しいプロファイルがメインウインドウ内に表示されるようになります。

4.2.4 リモートセッションの開始 Edit source

以前に保存したセッションから起動することができるほか、接続の詳細を保存せずに素早く接続することもできます。

4.2.4.1 リモートセッションを素早く開始する方法 Edit source

様々な詳細設定を追加したり保存したりせずにリモートセッションに素早く接続するには、メインウインドウの上部にあるドロップダウンボックスとテキストボックスをお使いください。

クイックスタート
図 4.4: クイックスタート

まずはドロップダウンリストで通信プロトコルを選択 (例: VNC) して、その後 VNC サーバのホスト名または IP アドレスを入力してください。ディスプレイ番号を指定する場合は、ホスト名または IP アドレスに続いてコロンを入力し、番号を入力してください。入力が終わったら Enter で接続します。

4.2.4.2 保存済みのリモートセッションへの接続 Edit source

特定のリモートセッションを開くには、セッションの一覧から項目を選んでダブルクリックします。

4.2.4.3 リモートセッションのウインドウ Edit source

リモートのセッションはウインドウ内のタブとして表示されます。それぞれのタブが 1 つのセッションに対応しています。また、ウインドウの左側にあるツールバーを利用することで、ウインドウやセッションを管理することができます。ここではフルスクリーンモードやセッションのディスプレイサイズに合わせたウインドウのサイズ変更、そしてセッションに対する特定キー入力の送信や画像品質の設定などを行うことができます。

Remmina によるリモートセッション接続
図 4.5: Remmina によるリモートセッション接続

4.2.5 保存済みセッションの編集/コピー/削除 Edit source

保存済みのリモートセッションを 編集 するには、 Remmina のメインウインドウ内で名前を右クリックし、 Edit を選択します。それぞれの項目に関する説明は、 4.2.3項 「リモートセッションの追加」 をお読みください。

保存済みのリモートセッションを コピー するには、 Remmina のメインウインドウ内で名前を右クリックし、 コピー を選択します。 リモートデスクトップの設定 ウインドウが表示されたら、プロファイルの名前を変更してください。それ以外にも、必要に応じてオプションを変更してもかまいません。変更が終わったら Save を押してください。

保存済みのリモートセッションを 削除 するには、 Remmina のメインウインドウ内で名前を右クリックし、 Delete を選択します。削除確認のメッセージが表示されますので、 はい を押して削除を行ってください。

4.2.6 コマンドラインからのリモートセッションの実行 Edit source

リモートセッションをコマンドラインから開きたい場合や、バッチファイルから開く際に、メインのアプリケーションウインドウ無しで表示させたい場合は、下記のような書式で実行します:

 > remmina -c プロファイル名.remmina

Remmina の設定ファイルは、ホームディレクトリ内の .local/share/remmina/ ディレクトリ内に保存されます。設定ファイルは名前などとは無関係に付与されます。プロファイルからファイル名を調べたい場合は、 Remmina を起動してからメインウインドウ内のプロファイルを選択し、ウインドウ下部のステータス行に表示されるパスからファイル名を判断してください。

プロファイルのファイルパスの表示
図 4.6: プロファイルのファイルパスの表示

Remmina を起動していない状態であれば、 sle15.remmina のように、設定ファイルをよりわかりやすいファイル名に変更することができます。もちろん設定ファイルをどこか別のディレクトリにコピーして、 remmina -c で指定して実行することもできます。

4.3 VNC サーバ側でのワンタイムセッションの設定 Edit source

ワンタイムセッションはリモートのクライアントからの接続で起動する仕組みです。クライアントから接続を行うと、サーバ内のグラフィカルなログイン画面を表示し、セッションを開始することができます。また、ログインマネージャ側で対応していれば、デスクトップ環境を選択することもできます。ワンタイムセッションの接続を閉じると、その中で動作していたアプリケーションも終了します。ワンタイム VNC セッションは共有することができませんが、単一のホスト内で複数のセッションを扱うことができます。

手順 4.1: ワンタイム VNC セッションの有効化
  1. YaST › ネットワークサービス › リモート管理 (VNC) を選択して起動します。

  2. セッション管理機能無しのリモート管理を許可する を選択します。

  3. VNC セッションを Web ブラウザからアクセスできるようにするには、 Web ブラウザを利用したアクセスを有効にする を選択します。

  4. 必要であれば、 ファイアウオールでポートを開く を選択することもできます (たとえばネットワークインターフェイスが外部ゾーンとして設定されている場合など) 。複数のネットワークインターフェイスが設定されている場合は、 ファイアウオールの詳細 ボタンでネットワークインターフェイスを選択し、そのインターフェイスでだけ開くこともできます。

  5. 設定を確認して 次へ を押します。

  6. この時点で必要なパッケージがインストールされていない場合は、それらのパッケージをインストールするよう承認を求められます。

    ヒント
    ヒント: ディスプレイマネージャの再起動について

    YaST ではディスプレイマネージャの設定を変更します。設定を反映させるには、いったんお使いのグラフィカルセッションを終了し、ディスプレイマネージャを再起動する必要があります。

リモート管理
図 4.7: リモート管理

4.3.1 利用可能な設定 Edit source

openSUSE Leap の既定の設定では、解像度が 1024x768 ピクセルで 16 ビットの色数になっています。ポートは 通常の VNC ビューアからの接続が 5901 で、 Web ブラウザからの接続が 5801 です。

異なるポートを使用するように設定することもできます。 詳しくは 4.3.3項 「ワンタイム VNC セッションの設定」 をお読みください。

VNC でのディスプレイ番号と X のディスプレイ番号は、ワンタイムセッションではそれぞれ独立して管理されます。 VNC のディスプレイ番号は、それぞれのサーバ設定で手作業による割り当てを行って使用します (上記の例では :1 がディスプレイ番号です) が、 X のディスプレイ番号は、 VNC セッションが開始された際、その時点で空いている X ディスプレイ番号を自動的に使用します。

既定では、 VNC クライアントとサーバは、インストール時に生成した自己署名型の SSL 証明書を利用して、機密保持接続を確立しようとします。このままお使いいただくこともできますが、必要に応じて証明書を置き換えることもできます。ただし、自己署名型の証明書を利用する場合、 VNC ビューア側や Web ブラウザ側で証明書の警告メッセージが表示されることになります。

ヒント
ヒント

なお VNC クライアントによっては、既定で設定される自己署名型の証明書を利用した暗号化接続を拒否するようなものもあります。たとえば Vinagre では、 GnuTLS のグローバルな証明書ストアを利用して証明書を検証しますので、自己署名型の証明書の場合には接続が失敗します。このような場合は、 x509 以外の暗号化方式を使用するか、もしくは VNC サーバに対して何らかの証明機関から証明書を発行してもらい、その証明機関の証明書をクライアント側の証明書ストアに取り込んでください。

4.3.2 ワンタイム VNC セッションの開始 Edit source

ワンタイム VNC セッションに接続するには、まず VNC ビューアをインストールしておかなければなりません。インストールに関する詳細は 4.1項 「vncviewer クライアント」 をお読みください。なお、 JavaScript に対応した Web ブラウザを利用して、 VNC のセッションに接続することもできます。この場合は、 http://jupiter.example.com:5801 のような URL を指定して接続してください。

4.3.3 ワンタイム VNC セッションの設定 Edit source

既定値を変更する必要がなければ、この手順は実施しなくてもかまいません。

ワンタイム VNC セッションは、 systemd のソケット xvnc.socket 経由で起動されます。既定では 6 つの設定ブロックが存在していて、そのうち 3 つが VNC ビューア向け ( vnc1 から vnc3 まで) で、残りの 3 つが JavaScript クライアント向け ( vnchttpd1 から vnchttpd3 まで) です。既定では vnc1vnchttpd1 だけが有効化されています。

VNC サーバソケットをシステムの起動時に有効化するには、下記のコマンドを実行します:

> sudo  systemctl enable xvnc.socket

即時にソケットを開始するには、下記のコマンドを実行します:

> sudo  systemctl start xvnc.socket

Xvnc サーバは、 server_args オプションを介して設定することができます。オプションの一覧については Xvnc --help をお読みください。

独自の設定を加える場合、同じホストで動作している他の設定やサービス、既存の VNC セッションなどが使用していないポートを設定するよう注意してください。

設定の変更を反映させるには、下記のコマンドを実行します:

> sudo systemctl reload xvnc.socket
重要
重要: ファイアウオールと VNC ポート

手順4.1「ワンタイム VNC セッションの有効化」 で説明している手順でリモート管理を設定すると、ポート 58015901 を開くように設定されます。 VNC セッションを提供するネットワークインターフェイスがファイアウオールで保護されている場合は、それぞれのポートを開くように設定する必要があります。詳しくは 第23章 「マスカレードとファイアウオール をお読みください。

4.4 永続 VNC サーバセッションの設定 Edit source

永続セッションを使用すると、複数のクライアントから同時に接続できるようになります。たとえば 1 つのクライアントに対してだけ操作を許可しておき、それ以外の全てのクライアントは表示専用に設定することで、デモンストレーション目的で公開するようなこともできます。また、講師から参加者のデスクトップにアクセスできるように設定しておけば、トレーニングなどの際にも便利に使用することができます。

ヒント
ヒント: 永続 VNC セッションへの接続

永続 VNC セッションに接続するには、まず VNC ビューアをインストールしておかなければなりません。インストールに関する詳細は 4.1項 「vncviewer クライアント」 をお読みください。なお、 JavaScript に対応した Web ブラウザを利用して、 VNC のセッションに接続することもできます。この場合は、 http://jupiter.example.com:5801 のような URL を指定して接続してください。

4.4.1 vncmanager を利用した VNC セッションの起動 Edit source

手順 4.2: 永続 VNC セッションの有効化
  1. YaST › ネットワークサービス › リモート管理 (VNC) を選択して起動します。

  2. セッション管理機能付きのリモート管理を許可する を選択します。

  3. VNC セッションを Web ブラウザからアクセスできるようにするには、 Web ブラウザを利用したアクセスを有効にする を選択します。

  4. 必要であれば、 ファイアウオールでポートを開く を選択することもできます (たとえばネットワークインターフェイスが外部ゾーンとして設定されている場合など) 。複数のネットワークインターフェイスが設定されている場合は、 ファイアウオールの詳細 ボタンでネットワークインターフェイスを選択し、そのインターフェイスでだけ開くこともできます。

  5. 設定を確認して 次へ を押します。

  6. この時点で必要なパッケージがインストールされていない場合は、それらのパッケージをインストールするよう承認を求められます。

    ヒント
    ヒント: ディスプレイマネージャの再起動について

    YaST ではディスプレイマネージャの設定を変更します。設定を反映させるには、いったんお使いのグラフィカルセッションを終了し、ディスプレイマネージャを再起動する必要があります。

4.4.1.1 永続 VNC セッションの設定 Edit source

手順4.2「永続 VNC セッションの有効化」 の手順に従って VNC セッションを有効化したあとは、 vncviewer や Remmina などの VNC ビューアを利用して、リモートのセッションに接続できるようになります。ログイン後はデスクトップ環境のシステムトレイ内に、 VNC というアイコンが表示されるようになります。アイコンを押すと VNC セッション ウインドウを表示することができます。お使いのデスクトップ環境がシステムトレイアイコンに対応していない場合は、 vncmanager-controller コマンドをお使いのうえ、手作業で設定を行ってください。

VNC セッションの設定
図 4.8: VNC セッションの設定

VNC セッションの動作を変えるには、それぞれ下記の設定を変更します:

Non-persistent, private

これを選択すると、ワンタイムセッションと同じ動作になります。セッションは他のユーザからは見えなくなりますが、切断するとセッションは終了してしまいます。詳しくは 4.3項 「VNC サーバ側でのワンタイムセッションの設定」 をお読みください。

Persistent, visible

これを選択すると、セッションは他のユーザから見えるようになり、切断してもセッションが終了しなくなります。

Session name

ここには永続セッションの名前を指定します。これにより、再接続時の識別が容易になります。

No password required

ユーザの認証情報の入力を行うことなく、セッションに対して自由にアクセスできるようにします。

Require user login

セッションにアクセスするために、正しいユーザ名とパスワードでのログインを求めるようにします。許可するユーザの一覧は、 Allowed users で指定します。

Allow one client at a time

複数のユーザが同時に接続することがないようにします。

Allow multiple clients at a time

永続セッションに対して、複数のユーザが同時に接続できるようにします。これはプレゼンテーションやトレーニングの際に便利な仕組みです。

OK を押して閉じます。

4.4.1.2 永続 VNC セッションへの参加 Edit source

4.4.1.1項 「永続 VNC セッションの設定」 の手順で永続 VNC セッションの設定を行ったら、あとは VNC ビューアを利用して接続することで、セッションに参加できるようになります。 VNC クライアントがサーバに接続すると、新しいセッションを作成するか、既存のセッションに参加するかを選択することができます:

永続 VNC セッションへの参加
図 4.9: 永続 VNC セッションへの参加

既存のセッションの名前を選択すると、永続セッションの設定によってはログインを求められることがあります。

4.5 VNC サーバ側での暗号化の設定 Edit source

VNC サーバを正しく設定すると、 VNC サーバとクライアントとの間が暗号化されるようになります。認証はセッションの冒頭で行われ、実際のデータ転送はそれ以降に行われます。

ワンタイム VNC セッションや永続 VNC セッションでは、 server_args 行で設定する /usr/bin/Xvnc コマンドの -securitytypes を指定することができます。 -securitytypes オプションでは認証方法と暗号化の両方を選択します。下記のいずれかを設定することができます:

認証
None, TLSNone, X509None

認証を行いません。

VncAuth, TLSVnc, X509Vnc

独自のパスワードを利用して認証します。

Plain, TLSPlain, X509Plain

ユーザのパスワードを確認するため、 PAM を利用して認証します。

暗号化
None, VncAuth, Plain

暗号化を行いません。

TLSNone, TLSVnc, TLSPlain

匿名 TLS 暗号を使用します。全ての通信内容が暗号化されますが、リモートホスト側の検証は何も行いません。ネットワーク上は暗号化されるため、盗聴の危険からは保護されますが、中間者攻撃 (man-in-the-middle attack) には無力です。

X509None, X509Vnc, X509Plain

証明書付きの TLS 暗号を使用します。自己署名型の証明書を使用している場合、最初の接続でユーザの確認を求められます。それ以降の接続では、証明書が変更された場合にのみ警告されるようになります。これにより盗聴の危険だけでなく、初回の接続以降は中間者攻撃 (man-in-the-middle attack) にも耐えられるようになります (SSH における鍵の確認と同様の方法です) 。また、公的な証明機関が発行し、マシン名が一致した証明書を使用している場合は、完全なセキュリティを実現できるようになります (一般的な HTTPS 暗号化接続と同じです) 。

ヒント
ヒント

なお VNC クライアントによっては、既定で設定される自己署名型の証明書を利用した暗号化接続を拒否するようなものもあります。たとえば Vinagre では、 GnuTLS のグローバルな証明書ストアを利用して証明書を検証しますので、自己署名型の証明書の場合には接続が失敗します。このような場合は、 x509 以外の暗号化方式を使用するか、もしくは VNC サーバに対して何らかの証明機関から証明書を発行してもらい、その証明機関の証明書をクライアント側の証明書ストアに取り込んでください。

ヒント
ヒント: 証明書とその鍵へのパス

X509 ベースの暗号化を使用する際は、 -X509Cert-X509Key のオプションで証明書と鍵を指定する必要があります。

複数のセキュリティタイプを指定する場合は、カンマで区切ってください。サーバとクライアントとの間で、最初に対応し許可された仕組みを使用します。この方法により、サーバ側で暗号化の優先順位を付けることができるようになります。また、この方法では暗号化に対応していないクライアントを受け付けなければならないような場合にも、有用です。

クライアント側でも同様にセキュリティタイプを指定することができます。これにより、暗号化に対応しているはずのサーバに接続する際、誤って暗号化せずに接続するような問題を防ぐことができます (ただし、この設定を行わなくても、 vncviewer であれば "Connection not encrypted!" (接続が暗号化されていません) と表示されるので、問題に気がつくことはできます) 。

4.6 Wayland との互換性について Edit source

VNC によるリモート管理機能は X11 に依存して作られているため、 Wayland を有効化していると画面が表示されない問題が発生することがあります。そのため、リモート管理機能を使用する場合は、 Wayland ではなく X11 を使用するように設定してください。たとえば gdm の場合、 /etc/gdm/custom.conf ファイルにある [daemon] セクション内に WaylandEnable=false を追加してください。また、ログイン時には X11 互換のセッションを選択する必要があることにも注意してください。なお、 GNOME で Wayland セッションを使用できないようにしたい場合は、 gnome-session-wayland パッケージを削除してロック (施錠) してください。

このページを印刷