14 VNCによるリモートグラフィカルセッション #
仮想ネットワークコンピューティング (VNC)では、グラフィカルデスクトップを介してリモートコンピュータにアクセスしたり、リモートグラフィカルアプリケーションを実行したりできます。VNCはプラットフォームに依存しないので、VNCを使用すれば、任意のオペレーティングシステムからリモートマシンにアクセスできます。この章では、デスクトップクライアントvncviewerおよびRemminaを使用してVNCサーバに接続する方法、およびVNCサーバを操作する方法について説明します。
SUSE Linux Enterprise Desktopでは、2種類のVNCセッションをサポートしています。1つはクライアントからのVNC接続が続く限り「存続する」一時的セッションで、もう1つは明示的に終了されるまで「存続する」永続的セッションです。
VNCサーバでは両方のタイプのセッションを異なるポートで同時に提供できます。ただし、オープンセッションを1つのタイプからもう一方のタイプに変換することはできません。
14.1 vncviewer
クライアント #
サーバによって提供されるVNCサービスに接続するには、クライアントが必要です。SUSE Linux Enterprise Desktopのデフォルトはvncviewer
で、これはtigervnc
パッケージで提供されます。
14.1.1 vncviewer CLIを使用した接続 #
VNCビューアを起動し、サーバとのセッションを開始するには、次のコマンドを使用します。
>
vncviewer jupiter.example.com:1
VNCディスプレイ番号の代わりに、2つのコロンを使用してポート番号を指定することもできます。
>
vncviewer jupiter.example.com::5901
VNCクライアントで実際に指定するディスプレイ番号またはポート番号は、ターゲットマシンでvncserver
によって選択されるディスプレイ番号またはポート番号と同じである必要があります。詳細については、14.4項 「永続的VNCサーバセッションを設定する」を参照してください。
14.1.2 vncviewer GUIを使用した接続 #
--listen
または接続先ホストを指定せずにvncviewer
を実行すると、接続の詳細を入力するよう求めるウィンドウが表示されます。14.1.1項 「vncviewer CLIを使用した接続」のように フィールドにホストを入力し、 をクリックします。
14.1.3 暗号化されていない接続の通知 #
VNCプロトコルは、さまざまな種類の暗号化接続をサポートしています。これをパスワード認証と混同しないでください。接続がTLSを使用していない場合、「(Connection not encrypted!) (接続が暗号化されていません!)」というテキストがVNCビューアのウィンドウタイトルに表示されることがあります。
14.2 Remmina: リモートデスクトップクライアント #
Remminaは、最新の機能豊富なリモートデスクトップクライアントです。VNC、SSH、RDP、Spiceなど、複数のアクセス方法をサポートしています。
14.2.1 インストール #
Remminaを使用するには、remminaパッケージがシステムにインストールされているかどうかを確認し、インストールされていない場合はインストールします。Remmina用のVNCプラグインもインストールすることを忘れないでください。
#
zypper in remmina remmina-plugin-vnc
14.2.2 メインウィンドウ #
remmina
コマンドを入力してRemminaを実行します。
メインアプリケーションウィンドウには、保存されているリモートセッションのリストが表示されます。ここでは、新しいリモートセッションを追加および保存したり、保存せずに新しいセッションをクイックスタートしたり、以前に保存したセッションを開始したり、Remminaのグローバル設定を行うことができます。
14.2.3 リモートセッションの追加 #
新しいリモートセッションを追加して保存するには、メインウィンドウの左上で、をクリックします。 ウィンドウが開きます。
新しく追加したリモートセッションプロファイルを指定するフィールドに入力します。最も重要な設定には次のものがあります。
- 名前
プロファイルの名前。この名前は、メインウィンドウにリストされます。
- プロトコル
リモートセッションに接続するときに使用するプロトコル(VNCなど)。
- または8単位
リモートサーバのIPアドレスまたはDNSアドレスとディスプレイ番号。
- ユーザ名、パスワード
リモート認証に使用する資格情報。認証しない場合は空のままにします。
- 色数、品質
接続速度と品質に応じて最適なオプションを選択します。
より詳細な設定を入力するには、
タブを選択します。クライアントとリモートサーバ間の通信が暗号化されていない場合は、
を有効にします。そうしないと接続が失敗します。高度なSSHトンネリングと認証オプションについては、
タブを選択してください。[保存]
新しいプロファイルがメインウィンドウに表示されます。14.2.4 リモートセッションの開始 #
以前に保存したセッションを開始するか、または接続の詳細を保存せずにリモートセッションをクイックスタートすることができます。
14.2.4.1 リモートセッションのクイックスタート #
接続の詳細を追加および保存することなく、リモートセッションをすばやく開始するには、メインウィンドウの上部にあるドロップダウンボックスとテキストボックスを使用します。
ドロップダウンボックスから通信プロトコル(「VNC」など)を選択して、次にVNCサーバのDNSまたはIPアドレスを入力し、それに続けてコロンとディスプレイ番号を入力して、Enterで確定します。
14.2.4.2 保存されたリモートセッションを開く #
特定のリモートセッションを開くには、セッションのリストからダブルクリックします。
14.2.4.3 リモートセッションウィンドウ #
リモートセッションは別のウィンドウのタブで開きます。タブごとに1つのセッションをホストします。ウィンドウの左側にあるツールバーは、ウィンドウ/セッションの管理(フルスクリーンモードの切り替え、セッションの表示サイズに合わせたウィンドウのサイズ変更、セッションへの特定のキーストロークの送信、セッションのスクリーンショット撮影、画質の設定など)に役立ちます。
14.2.5 保存されたセッションの編集、コピー、および削除 #
保存されたリモートセッションを編集するには、Remminaのメインウィンドウでその名前を右クリックし、 を選択します。関連するフィールドの説明については、14.2.3項 「リモートセッションの追加」を参照してください。
保存されたリモートセッションをコピーするには、Remminaのメインウィンドウでその名前を右クリックし、 を選択します。 ウィンドウで、プロファイルの名前を変更し、関連するオプションを必要なら調整し、 をクリックして確定します。
保存されたリモートセッションを削除するには、Remminaのメインウィンドウでその名前を右クリックし、 を選択します。次のダイアログで をクリックして確定します。
14.2.6 コマンドラインからのリモートセッションの実行 #
最初にメインのアプリケーションウィンドウを開くことなく、コマンドラインまたはバッチファイルからリモートセッションを開く必要がある場合は、次の構文を使用します。
>
remmina -c profile_name.remmina
Remminaのプロファイルファイルは、ホームディレクトリの.local/share/remmina/
ディレクトリに保存されます。開きたいセッションに属しているプロファイルファイルを決定するには、Remminaを実行し、メインウィンドウでセッション名をクリックし、下部のウィンドウのステータス行でプロファイルファイルへのパスを読み込みます。
が実行されていないときに、プロファイルファイルの名前をsle15.remmina
.remminaなどのより合理的なファイル名に変更することができます。プロファイルファイルをカスタムディレクトリにコピーして、そこからremmina -c
コマンドを使用して実行することもできます。
14.3 VNCサーバでのワンタイムセッションの設定 #
一時的セッションは、リモートクライアントによって開始されます。これにより、サーバにグラフィカルなログイン画面が開きます。この画面でセッションを開始するユーザを選択できます。さらに、ログインマネージャでサポートされている場合はデスクトップ環境も選択できます。そのようなVNCセッションへのクライアント接続をキャンセルすると、そのセッション内で開始したアプリケーションもすべて終了します。一時的なVNCセッションは共用できませんが、1つのホストで同時に複数のセッションを実行することは可能です。
まず、
› › の順に選択します。WebブラウザウィンドウでVNCセッションにアクセスする場合は、
をアクティブにします。必要な場合は、
にもチェックマークを付けます (たとえば、ネットワークインタフェースを外部ゾーンに属するように設定する場合)。ネットワークインタフェースが複数ある場合は、 で、特定のインタフェースにだけファイアウォールポートを開くように制限します。必要なパッケージの一部をまだ入手できない場合は、足りないパッケージのインストールを承認する必要があります。
ヒント: ディスプレイマネージャの再起動YaSTはディスプレイマネージャの設定を変更します。現在のグラフィカルセッションからログアウトし、ディスプレイマネージャを再起動して変更を有効にする必要があります。
14.3.1 使用可能な設定 #
SUSE Linux Enterprise Desktopのデフォルト設定では、1024x768ピクセルの解像度と16ビットの色数でセッションが提供されます。セッションで使用できるポートは、「正規の」VNCビューアの場合はポート5901
(VNCディスプレイ1
に相当)、Webブラウザの場合はポート5801
です。
その他の設定は、異なるポートで使用できます。 設定を変更する必要がある場合は、システム管理者に詳細を問い合わせてください。
VNCディスプレイ番号とXディスプレイ番号は、一時的セッションでは互いに独立しています。VNCディスプレイ番号は、サーバがサポートするすべての設定に手動で割り当てられます(上記の例では1)。VNCセッションは、設定の1つを使用して開始されるたびに、自動的に未使用のXディスプレイ番号を取得します。
デフォルトでは、VNCクライアントとサーバの両方が、インストール後に生成される自己署名SSL証明書を使用してセキュアな通信を試みます。デフォルトの証明書を使用することも、独自の証明書に置き換えることもできます。自己署名証明書を使用する際、初回の接続前に、VNCビューアおよびWebブラウザの両方で署名を確認する必要があります。
一部のVNCクライアントは、デフォルトの自己署名証明書を使用した安全な接続の確立を拒否します。たとえば、Vinagreクライアントは、GnuTLSグローバル信頼ストアに対して証明書を検証し、証明書が自己署名である場合には検証に失敗します。この場合、x509
以外の暗号化方式を使用するか、VNCサーバに対して正しく署名された証明書を生成し、これをクライアントのシステム信頼ストアにインポートします。
14.3.2 一時的VNCセッションを開始する #
一時的VNCセッションに接続するには、VNCビューアをインストールする必要があります。14.1項 「vncviewer
クライアント」も参照してください。または、JavaScriptを有効にしたWebブラウザで、URLとして「http://jupiter.example.com:5801
」を入力することにより、VNCセッションを表示できます。
14.3.3 一時的VNCセッションを設定する #
デフォルト設定を変更する必要も意志もない場合は、このセクションをスキップできます。
一時的VNCセッションは、systemd
ソケットxvnc.socket
を介して開始されます。このファイルは、デフォルトで、6つの設定ブロックを提供します: 。ビューア用にブロック(vnc1
からvnc3
vncまで)、JavaScriptクライアント用に3ブロック(vnchttpd1
からvnchttpd3
3まで)。デフォルトでは、vnc1
とvnchttpd1
だけが有効です。
ブート時にVNCサーバソケットをアクティブにするには、次のコマンドを実行します。
>
sudo
systemctl enable xvnc.socket
すぐにソケットを起動するには、次のコマンドを実行します。
>
sudo
systemctl start xvnc.socket
Xvnc
サーバは、server_args
オプションを介して設定できます。オプションのリストについては、Xvnc --help
を参照してください。
カスタム設定を追加する際には、それらの設定が、同じホスト上の他の設定、他のサービス、または既存の永続的VNCセッションですでに使用中のポートを使用しないことを確認してください。
設定の変更を有効にするには、次のコマンドを入力します:。
>
sudo
systemctl reload xvnc.socket
手順14.1「一時的VNCセッションの有効化」で説明されているように、リモート管理をアクティブにすると、ファイアウォール内でポート5801
および5901
が開きます。VNCセッションで使用されるネットワークインタフェースがファイアウォールで保護されている場合、VNCセッションの追加ポートをアクティブにする際には各ポートを手動で開く必要があります。手順については、Chapter 23, Masquerading and firewallsを参照してください。
14.4 永続的VNCサーバセッションを設定する #
永続的セッションは、複数のクライアントから同時にアクセスすることが可能です。この機能では、1つのクライアントがフルアクセスをもち、他のすべてのクライアントが表示専用アクセスを持つため、デモ用途に最適です。また、講師が受講生のデスクトップにアクセスする必要があるトレーニングセッションでも使用できます。
永続的VNCセッションに接続するには、VCNビューアをインストールする必要があります。詳細については、14.1項 「vncviewer
クライアント」を参照してください。または、JavaScriptを有効にしたWebブラウザで、URLとして「http://jupiter.example.com:5801
」を入力することにより、VNCセッションを表示できます。
永続的VNCセッションには次の2つのタイプがあります。
14.4.1 vncserver
を使用して開始されたVNCセッション #
このタイプの永続的VNCセッションは、サーバ上で開始されます。セッションとこのセッションで開始されたすべてのアプリケーションは、クライアント接続とは関わりなく、セッションが終了するまで実行されます。永続的セッションへのアクセスは、可能な2タイプのパスワードによって保護されます:。
フルアクセスを付与する通常のパスワード。または、
非対話的(表示オンリー)アクセスを付与するオプションの表示オンリーパスワード。
1つのセッションに、両方の種類のクライアント接続が一度に複数存在できます。
vncserver
を使用した永続的VNCセッションの開始 #シェルを開き、VNCセッションを所有するユーザとしてログインしていることを確認します。
VNCセッションで使用されるネットワークインタフェースがファイアウォールで保護されている場合は、ファイアウォール内でセッションによって使用されるポートを手動で開く必要があります。複数のセッションを開始する場合は、一連のポートを開くことができます。ファイアウォールの設定方法の詳細については、Chapter 23, Masquerading and firewallsを参照してください。
vncserver
は、ディスプレイ:1
にはポート5901
、ディスプレイ:2
にはポート5902
という順序でポートを使用します。永続的セッションの場合、VNCディスプレイとXディスプレイは、通常、同じ番号です。1024x768ピクセルの解像度と16ビットの色数でセッションを開始するには、次のコマンドを入力します。
vncserver -alwaysshared -geometry 1024x768 -depth 16
vncserver
コマンドは、何も指定されない場合、未使用のディスプレイ番号を選択し、その選択内容を出力します。その他のオプションについては、man 1 vncserver
を参照してください。
初めてvncserver
を実行すると、セッションへのフルアクセス用パスワードが要求されます。必要な場合は、セッションへの表示オンリーアクセス用パスワードも入力できます。
ここで指定するパスワードは、同じユーザによって開始される今後のセッションにも使用されます。それらのパスワードは、vncpasswd
コマンドで変更できます。
必ず、かなりの長さ(8文字以上)の強力なパスワードを使用してください。これらのパスワードは共用しないでください。
VNCセッションをキャンセルするには、通常のローカルXセッションのシャットダウンのように、VNC環境内部で実行中のデスクトップ環境をVCNビューアからシャットダウンします。
セッションを手動でキャンセルしたい場合は、VNCサーバでシェルを開き、キャンセルしたいVNCセッションを所有するユーザとしてログインしていることを確認します。次のコマンドを実行して、ディスプレイ:1
で実行されているセッションをキャンセルします: vncserver
-kill :1
14.4.1.1 永続的VNCセッションを設定する #
永続的VNCセッションは、$HOME/.vnc/xstartup
を編集することによって設定できます。デフォルトでは、このシェルスクリプトは、起動元と同じGUI/ウィンドウマネージャを起動します。SUSE Linux Enterprise Desktopでは、これは、GNOMEまたはIceWMのいずれかです。好みのウィンドウマネージャでセッションを開始するには、変数WINDOWMANAGER
を設定します。
WINDOWMANAGER=gnome vncserver -geometry 1024x768 WINDOWMANAGER=icewm vncserver -geometry 1024x768
永続的VNCセッションは、ユーザごとの単一設定として設定されます。同じユーザが開始する複数のセッションでは、すべて同じ起動ファイルとパスワードファイルが使用されます。
14.4.2 vncmanager
を使用して開始されたVNCセッション #
まず、
› › の順に選択します。WebブラウザウィンドウでVNCセッションにアクセスする場合は、
をアクティブにします。必要な場合は、
にもチェックマークを付けます (たとえば、ネットワークインタフェースを外部ゾーンに属するように設定する場合)。ネットワークインタフェースが複数ある場合は、 で、特定のインタフェースにだけファイアウォールポートを開くように制限します。必要なパッケージの一部をまだ入手できない場合は、足りないパッケージのインストールを承認する必要があります。
ヒント: ディスプレイマネージャの再起動YaSTはディスプレイマネージャの設定を変更します。現在のグラフィカルセッションからログアウトし、ディスプレイマネージャを再起動して変更を有効にする必要があります。
14.4.2.1 永続的VNCセッションを設定する #
手順14.3「永続的VNCセッションの有効化」で説明したVNCセッション管理を有効にすると、通常、vncviewer
やRemminaなどの好みのVNCビューアでリモートセッションに接続できます。ログイン画面が表示されます。ログインすると、デスクトップ環境のシステムトレイに「VNC」アイコンが表示されます。アイコンをクリックすると、 ウィンドウが開きます。表示されない場合、またはデスクトップ環境がシステムトレイのアイコンをサポートしていない場合は、手動でvncmanager-controller
を実行してください。
VNCセッションの動作に影響するいくつかの設定があります。
これは一時的セッションに相当します。このセッションは他のユーザに表示されず、セッションを切断すると終了します。詳細については、14.3項 「VNCサーバでのワンタイムセッションの設定」を参照してください。
このセッションは他のユーザに表示され、セッションを切断しても実行され続けます。
ここで、永続的セッションの名前を指定して、再接続時に簡単に識別できるようにすることができます。
セッションに、ユーザの資格情報でログインすることなく、自由にアクセス可能です。
セッションにアクセスするには、有効なユーザ名とパスワードでログインする必要があります。
テキストボックスに有効なユーザ名を一覧表示します。同時に複数のユーザがセッションに参加しないようにします。
複数のユーザが永続的セッションに同時に参加できるようにします。リモートプレゼンテーションやトレーニングセッションに便利です。
をクリックして、確定します。
14.4.2.2 永続的VNCセッションへの参加 #
14.4.2.1項 「永続的VNCセッションを設定する」で説明した永続的VNCセッションを設定した後、VNCビューアでそのセッションに参加することができます。VNCクライアントからサーバに接続すると、新しいセッションを作成するか、既存のセッションに参加するかを選択するよう求めるプロンプトが表示されます。
既存のセッションの名前をクリックすると、永続的セッションの設定に応じて、ログインアカウント情報の入力を求められることがあります。
14.5 VNCサーバでの暗号化の設定 #
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暗号化。すべてが暗号化されますが、リモートホストの検証は行われません。したがって、受動的攻撃からは保護されますが、中間者攻撃からは保護されません。
- x509None、x509Vnc、x509Plain
証明書によるTLS暗号化。自己署名証明書を使用する場合、初回接続時に証明書を検証するよう要求されます。以降の接続では、証明書が変更された場合にのみ警告が表示されます。したがって、初回接続時には中間者攻撃以外のすべての攻撃から保護されます(SSHの一般的な使用方法と同様)。マシン名に一致する認証局によって署名された証明書を使用すると、完全なセキュリティを実現できます(HTTPSの一般的な使用方法と同様)。
ヒント一部のVNCクライアントは、デフォルトの自己署名証明書を使用した安全な接続の確立を拒否します。たとえば、Vinagreクライアントは、GnuTLSグローバル信頼ストアに対して証明書を検証し、証明書が自己署名である場合には検証に失敗します。この場合、
x509
以外の暗号化方式を使用するか、VNCサーバに対して正しく署名された証明書を生成し、これをクライアントのシステム信頼ストアにインポートします。ヒント: 署名とキーのパスX509ベースの暗号化では、
-X509Cert
オプションと-X509Key
オプションで、X509証明書とキーのパスを指定する必要があります。
複数のセキュリティタイプをカンマで区切って選択した場合、クライアントとサーバの両方でサポートおよび許可されているセキュリティタイプが使用されます。この方法により、サーバ上で日和見暗号化を設定できます。これは、暗号化をサポートしないVNCクライアントをサポートする必要がある場合に便利です。
暗号化が有効であることがわかっているサーバに接続する場合、クライアント側で、許可されているセキュリティタイプを指定してダウングレード攻撃を防止することもできます(ただし、この場合、vncviewerに「Connection not encrypted! (接続が暗号化されていません)」という警告メッセージが表示されます)。
14.6 Waylandとの互換性 #
リモート管理(VNC)機能は、X11を使用し、Waylandが有効になっていると画面が空白になる場合があります。ディスプレイマネージャは、WaylandではなくX11を使用するように設定する必要があります。gdmの場合、/etc/gdm/custom.conf
を編集します。[daemon]
セクションで、WaylandEnable=false
を設定ファイルに追加します。ログインするとき、ユーザは、X11互換セッションも選択する必要があります。GNOMEのWaylandオプションを削除したい場合、gnome-session-waylandパッケージを削除し、ロックすることができます。