第5章 VNC を利用したリモートアクセス

目次

5.1. ワンタイム VNC セッション
5.2. 永続 VNC セッション

概要

Virtual Network Computing (VNC) と呼ばれる仕組みを利用することで、 ネットワーク上の離れた場所にあるグラフィカルな (シェルではない) デスクトップを 利用することができるようになります。 VNC はプラットフォームに依存しない 仕組みであるため、任意のオペレーティングシステムからアクセスすることが できます。

openSUSE では、 VNC のセッションを 2 種類の方法で提供しています: 1 つはワンタイムセッションと呼ばれるもので、 VNC が接続されている間だけ デスクトップのセッションが 有効になる 仕組みです。もう 1 つは 永続セッションと呼ばれるもので、明示的に終了させるまでずっとデスクトップの セッションを 有効にし続ける 仕組みです。

[Note]セッションの種類

それぞれ異なるポートを利用することで、 1 台のマシンから複数種類のセッションを 同時に提供することができますが、一方のセッションを他方のセッションに変換 したりすることはできません。

5.1. ワンタイム VNC セッション

ワンタイムセッションは、ネットワーク上の離れた場所にあるクライアントから 接続して起動します。接続を行なうと、サーバ上のグラフィカルなログイン画面が 表示される仕組みで、ここからデスクトップのセッションを起動するユーザを 選択することができるほか、ログインマネージャ側で対応していれば、デスクトップ 環境を選択することもできます。このような接続の場合、クライアントからの 接続を切断すると、そのセッション内で起動していたアプリケーションも全て 終了します。また、ワンタイム VNC セッションは共有することができませんが、 単一のホストで同時に複数のセッションを起動することができます。

手順5.1 ワンタイム VNC セッションの有効化

  1. YaST+ネットワークサービス+リモート管理 (VNC) を選択します。

  2. リモート管理を許可する を選択します。

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

  4. 最後に設定内容を確認し、 完了 を押します。

  5. この時点で必要なパッケージがインストールされていない場合は、ここで パッケージのインストールが行なわれます。

[Note]利用可能な設定

openSUSE では、既定で 1024x768 ピクセル 16 ビット色の設定が行なわれて います。また、セッションは通常の VNC ビューア向けにポート番号 5901 (VNC ディスプレイ番号 1) が、 Web ブラウザ向けにポート番号 5801 がそれぞれ設定されています。

上記以外のポート設定を行なうことも可能です。

VNC ディスプレイ番号と X におけるディスプレイ番号は、ワンタイムセッションの 場合はそれぞれ独立した番号体系で、 VNC ディスプレイ番号 (上記の例では :1) は設定で行なうことができますが、 X のディスプレイ番号は空いているものを 自動的に利用します。

5.1.1. ワンタイム VNC セッションへの接続

ワンタイム VNC セッションに接続するには、クライアント側のマシンに VNC ビューアをインストールしなければなりません。 SUSE Linux 製品では、標準の VNC ビューアとして vncviewer と呼ばれるソフトウエア (tightvnc パッケージ内に あります) が用意されています。また、お使いの Web ブラウザで Java アプレットを 起動し、そこから VNC セッションを起動することもできます。

VNC ビューアを起動し、既定値のままの設定が行なわれているサーバに接続する には、下記のコマンドを実行します:

vncviewer jupiter.example.com:1

VNC のディスプレイ番号ではなく、ポート番号を直接指定したい場合は、下記の ように 2 つのコロンを付けて実行します:

vncviewer jupiter.example.com::5901

これ以外にも、 Java に対応した Web ブラウザを利用して、 VNC セッションに 接続することもできます。この場合は、たとえば下記のような URL を入力して ください: http://jupiter.example.com:5801

5.1.2. ワンタイム VNC セッションの設定

以下の記述は既定値を変更して使いたい場合の説明であるため、既定値を変更 する必要がない場合や、変更したくない場合は読み飛ばしてください。

ワンタイムの VNC セッションは、 xinetd デーモン経由で起動されます。設定ファイルは /etc/xinetd.d/vnc に存在していて、既定では 6 種類 (VNC ビューア向けが 3 種類 (vnc1 から vnc3 まで)) 、 Java アプレット向けが 3 種類 (vnchttpd1 から vnchttpd3 まで)) の設定が提供されています。また、既定では vnc1vnchttpd1 だけが有効になっています。

設定を有効にするには、 disable = yes と書かれている 行を削除するか、コメントアウト (該当の行頭に # 文字を 入れる) してください。逆に設定を無効にするには、行を追加するか、もしくは コメント文字 (#) を削除してください。

また、 Xvnc サーバは server_args オプションで詳しい設定を行なうことができます。詳しくは Xnvc --help で表示されるヘルプをお読みください。

独自の設定を追加する場合は、同じホストの他の設定やサービス、もしくは永続 VNC セッションで、該当のポートが使用されていないことを確認してください。

設定の変更は、下記のコマンドを実行することで反映させることができます:

rcxinetd reload
[Important]ファイアウオールと VNC のポート

手順5.1「ワンタイム VNC セッションの有効化」 の手順でリモート管理を 有効にした場合、ファイアウオールではそれぞれ 58015901 のポートを利用します。 VNC セッションを提供するネットワークインターフェイスに対して、 ファイアウオールの保護を設定していて、上記以外のポートで VNC セッションを 提供する場合は、それぞれのポートに対してファイアウオールを設定し、 ポートを開く必要があります。詳しくは 第14章 マスカレードとファイアウオール (↑セキュリティガイド) をお読みください。

5.2. 永続 VNC セッション

永続 VNC セッションはサーバ内で起動します。セッションとその中で動作する全ての アプリケーションは、明示的に終了するまでは、クライアントの接続が切断されても 動作し続けます。

永続 VNC セッションは、複数のホストから同時に接続することができます。これは 1 つのホストに対して完全なアクセスを、残りのホストに閲覧のみのアクセスを許可 するなどして、デモンストレーションを行ないたい場合に便利な方法です。また、 指導者が受講者のデスクトップに対してアクセスしたりしたい場合にも便利です。 ただし、多くの用途において、 VNC セッションを共有したりする必要は無いものと 思われます。

ディスプレイマネージャを起動するワンタイムセッションとは異なり、永続セッション はデスクトップ環境を動作させてから VNC セッションを起動します。

また、永続セッションは下記の 2 種類の方法で保護することができます:

  • 完全なアクセスを許すためのパスワードを設定する

  • (必要であれば) 閲覧のみを許すためのパスワードを設定する

永続セッションでは、複数の種類の接続を同時に受け付けることができます。

手順5.2 永続 VNC セッションの有効化

  1. シェルを起動して、 VNC セッションを動作させるユーザでログインしている かどうかを確認します。

  2. VNC セッションを提供するネットワークインターフェイスに対して、ファイア ウオールの保護を設定している場合は、 VNC セッションで利用するポートを 手作業で開く必要があります。複数のセッションを起動する場合は、ポートの 範囲を指定してください。ファイアウオールの設定について、詳しくは 第14章 マスカレードとファイアウオール (↑セキュリティガイド) をお読みください。

    なお、 vncserver はディスプレイ番号が :1 の場合はポート番号 5901 を、 ディスプレイ番号が :2 の場合はポート番号 5902 を使用します。 永続 VNC セッションの場合、 VNC のディスプレイ番号と X のディスプレイ 番号は、通常同じ番号になります。

  3. 1024x769 ピクセルの解像度で、 16 ビット色のセッションを起動するには、 下記のコマンドを実行します:

    vncserver -geometry 1024x768 -depth 16

    ここで、 vncserver コマンドは未使用のディスプレイ 番号を自動的に判断し、表示します。詳しいオプションについては、 man 1 vncserver で表示されるマニュアルページを お読みください。

vncviewer を始めて起動した場合は、セッションに対して 完全なアクセスを許すためのパスワードを入力するように促されます。必要で あれば、閲覧のみのパスワードを設定することもできます。

なお、上記で入力したパスワードは、同じユーザで起動する限り常に同じものを 利用します。パスワードを変更したい場合は、 vncpasswd コマンドで設定してください。

[Important]セキュリティ面の考慮事項

パスワードの長さは十分に確保し、十分な強度となるように設定してください (8 文字以上をお勧めします) 。また、パスワードは他のものと共有したりは しないでください。

VNC の接続は暗号化が行なわれないことに注意してください。そのため、 2 台のマシン間を経由するネットワーク内で、誰かがパケットキャプチャを 行なうと、セッションの開始時に転送されるパスワードを読み出すことが できてしまいます。

セッションを終了するには、通常のローカル X セッションを終了するのと 同様に、 VNC ビューアからセッションを起動していたデスクトップ環境を 終了してください。

手動でセッションを終了したい場合は、 VNC サーバ上でシェルを開いてから、 終了させたいユーザでログインしていることを確認します。その状態から、 たとえば :1 のディスプレイ番号の VNC セッションを 終了するには、下記のようなコマンドを実行します: vncserver -kill :1

5.2.1. 永続 VNC セッションへの接続

永続 VNC セッションに接続するには、クライアント側のマシンに VNC ビューアをインストールしなければなりません。 SUSE Linux 製品では、標準の VNC ビューアとして vncviewer と呼ばれるソフトウエア (tightvnc パッケージ内に あります) が用意されています。また、お使いの Web ブラウザで Java アプレットを 起動し、そこから VNC セッションを起動することもできます。

VNC ビューアを起動し、 :1 のディスプレイに接続する には、下記のコマンドを実行します:

vncviewer jupiter.example.com:1

VNC のディスプレイ番号ではなく、ポート番号を直接指定したい場合は、下記の ように 2 つのコロンを付けて実行します:

vncviewer jupiter.example.com::5901

これ以外にも、 Java に対応した Web ブラウザを利用して、 VNC セッションに 接続することもできます。この場合は、たとえば下記のような URL を入力して ください: http://jupiter.example.com:5801

5.2.2. 永続 VNC セッションの設定

永続 VNC セッションの設定は、 $HOME/.vnc/xstartup ファイルで行ないます。既定では、このシェルスクリプトは xtermtwm ウインドウマネージャを起動します。 GNOME や KDE を起動したい場合は、 twm で始まる行について、 それぞれ下記のように修正してください:

/usr/bin/gnome     # GNOME
/usr/bin/startkde  # KDE
[Note]設定はユーザごとに保存される点について

永続 VNC セッションは、ユーザごとに設定を行なって保存します。同じユーザで 複数のセッションを起動した場合は、それらは全て同じ設定およびパスワードに なります。


openSUSE リファレンス 13.1