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