|
|
VNCサーバーの構築
|
VNCについてサーバー機の環境についてVNCクライアントの準備VNCサーバーの基本設定VNCサーバーのお便利設定VNCサーバーの一括起動SSH転送による暗号化接続 |
VNCサーバーの構築に必要なファイルこの コンテンツ に従って普通に WBEL や CentOS を インストール すると、 vnc-server とその設定に必要なファイル類は既に 構築中のLinuxサーバー にインストールされているはずです。 以下に、WBELやCentOSにインストールされているvnc-serverで、操作や設定が必要なファイルを示します。 それ以外の ディストリビューション をお使いの場合や、標準添付以外のパッケージをインストールした場合には、ファイル名やディレクトリの パス が以下とは異なる場合がありますので注意してください。
vnc-serverの必要ファイル一覧 不特定多数の クライアント にサービスを提供することが基本の httpd や named などと異なり、vnc-serverは一般に個別の ユーザーアカウント から vnc-serverの実体プログラムである Xvnc を デーモン として起動して使用します。 ただし、実際にXvncを直接起動することはまずありません。 vnc-serverには Perl の スクリプト である "/usr/bin/vncserver" が準備されていて、基本的にはこれひとつでXvncの起動や終了、vnc-server全般の初期設定などを行うように設計されています。 vnc-serverに付属する "/usr/bin/vncpasswd" は、 VNC クライアントがサーバーに接続するときのパスワードを生成・変更するための コマンド です。 |
||||||||
| 基本的には任意のユーザーアカウントから vncpasswd と実行してパスワードをタイプするだけ、という使い方になります。 |
実際には、ユーザーアカウントに対して初めてvncserverを設定を行うとき、このコマンドは "/usr/bin/vncserver" から自動的に呼び出されて新規にパスワードの生成を行いますから、 "/usr/bin/vncpasswd" を直接使用するのは既存のパスワードを変更する場合に限られるでしょう。 任意のユーザーアカウントから初めて "/usr/bin/vncserver" を実行すると、 ホームディレクトリ 以下にディレクトリ ".vnc/ とファイル .Xauthority が作成されます。 ".vnc/ の中には、VNCクライアントから接続したときに起動するデスクトップ環境設定ファイル xstartup 、パスワード記述ファイル passwd などが保存されます。 .Xauthority は、 X-Window を利用するときにも作成されるファイルですが、この passwd がセットされると同時にユーザーアカウントのパスワードとの橋渡しの設定値がセットされ、VNCで設定したパスワードだけで ログイン できるようになります。 前述のとおりXvncデーモンの起動も "/usr/bin/vncserver" から行いますが、VNCサーバーの利用形態の性質上、Xvncデーモンの起動(つまり"/usr/bin/vncserver"の実行)は "root" アカウント からだけではなく、任意のユーザーアカウントからも行えますし、 サーバー機 の性能が許す限り幾つでもサーバーデーモンを起動することができるようになっています。 例えば起動方法と終了方法は任意のユーザーアカウントから、 |
||||||||
"/usr/bin/"
には通常
パス
が通っていますので
、パスを省略して実行することができます。
「ディスプレイ番号」 については後ほど説明します。 |
"vncserver :1" →vncserverをディスプレイ番号1番でXvncを起動 "vncserver -kill :1" →稼働中のディスプレイ番号1番のXvncを終了 というように実行します。 Xvncデーモンの終了は、原則としてそのデーモンを起動したユーザーアカウントから行うことになります。 vnc-serverはこのようにユーザーアカウントごとにデーモンを起動して利用するのが一般的ですが、 "/etc/sysconfig/vncservers" にvnc-serverを利用するユーザーアカウントを予め記述しておき、起動スクリプト "/etc/rc.d/init.d/vncserver" で一括して複数のXvncデーモンを起動することもできます。 また"/etc/rc.d/init.d/"の シンボリックリンク が"/etc/init.d/"になっていますので、この起動スクリプトは "/etc/init.d/vncserver" でも呼び出すことができます。 例えば、 |
||||||||
"/etc/rc.d/init.d/"
には
パス
が通っていません
から、パスを省略して実行することはできません。
|
"/etc/init.d/vncserver start" →vncserverの起動 "/etc/init.d/vncserver stop" →vncserverの停止 |
||||||||
|
|
という使い方になります。 vnc-serverはこのように、 ・VNCを利用したいユーザーが自分で個別にXvncデーモンを起動して利用する。 ・管理者が利用を許可するユーザーに対して一括してXvncデーモンを起動し、接続環境を提供する。 という二通りの使い方ができるようになっています。 前者の方法についてはこのページの次の項目から説明します。
後者の方法についても、ひとまずは個別にXvncを起動できるようにしておく必要がありますから、同様にこのページの次の項目からご覧の上、
|
||||||||
vncserverによる初期設定とVNCクライアントからの接続vnc-server は、 構築中のLinuxサーバー 上に ユーザーアカウント を持っているユーザーのみが利用できます。 そしてそのユーザーがvnc-serverを利用するには、最初に初期設定 スクリプト "vncserver" を実行します。
まず
サブネット
内の適当な
クライアント機
から
SSHクライアント
で
構築中のLinuxサーバー
に
ログイン
してください
vnc-serverの初期設定 スクリプト "vncserver" は カレント ユーザーに対して実行されますので、必要であればここで su コマンド を使ってvnc-serverの利用を有効にしたいユーザーアカウントに変更します。 それから "vncserver" を実行します。 カレントユーザーに対してvncserverが初めて実行されたときはパスワードの入力を促されますので、ここで適当なパスワードを設定します。 このパスワードは VNC クライアント から接続を行うときに必要なパスワードですから、 カレントユーザーの "web1.obenri.com" へのログインパスワードとは別の物です 。もちろん同じでも構いません。 パスワードが設定されると、即座に Xvnc デーモン が起動します。 初めてvncserverを実行したユーザーアカウントではメッセージにあるようにいくつかの初期設定ファイルが作成されます。 ちなみに、過去に実機上で X-Window を起動したことがあるユーザーアカウントの場合は、既にその時点で .Xauthority が作成されていますので、.Xauthorityを作成したというメッセージは表示されないはずです。 さて、実はもうこの段階でvnc-serverは利用可能になっています。 早速同じサブネットに接続している任意のパソコンから適当なVNCクライアントで接続してみましょう。 VNCクライアントから接続するには、接続の ダイアログ に、 と入力します。 具体的な値は、 vncserver を実行したときに表示されます(上の 赤字 で示す部分です)ので、通常はそのとおりに "web1.obenri.com:1" と入力すればOKです。 従ってこのケースでは、
RealVNCビュワーで接続 あるいは、
UltraVNCビュワーで接続 のようにダイアログに入力すればOKです。 |
|||||||||
|
要するに接続情報の実体は
IPアドレス
であって、それを指し示すホスト名やFQDNならばそれでもOKです、ということですね。
つまり TCP/IP の一般的な ノード の指定方法と同じ、ということです。 |
ただしクライアント側で FQDN "web1.obenri.com" が、実際にサーバーに割り当てられている IPアドレス "192.168.100.11" に 名前解決 されないようなネットワーク環境の場合は、直接IPアドレスで "192.168.100.11:1" と設定しなければなりません。 また逆に "web1.obenri.com" 以外であっても、 "192.168.100.11" に名前解決されるFQDNやホスト名であれば、例えば "web1:1" のように指定することもできます。 接続先を適切に入力したら OK あるいは 接続 ボタンなどをクリックし、引き続き表示されるパスワード入力ダイアログに先ほど設定したパスワードを入力すると接続が行われます。
|
||||||||
VNC接続時のデスクトップ環境の設定 |
|||||||||
|
地味な灰色のデスクトップにそこはかとなく
CUI
のウインドウがあるだけ...。
何かの間違いでは...と思ってしまいそうな画面ですが、これでも立派な X-Winbdow の GUI 画面です。 WindowsOS や MacintoshOS では、デスクトップの操作環境は基本的に一種類ずつしかないのでピンとこないかもしれませんが、LinuxOSなどの UNIX 系 OS には非常に多くのデスクトップ環境があって自由に選んで使用することができます。 |
初期設定でのVNCクライアント画面(twm) 「なんだ、これ?。」と思われる方も多いかもしれませんが、この画面は LinuxOS の旧式のデスクトップ環境 "twm" の画面です。
この
コンテンツ
どおりに
WBEL
や
CentOS
の
インストール
を行うと、X-Windowのデスクトップ環境として
GNOME
が普通に利用できるようになっているはずですが
これではもちろん使い勝手が悪すぎますから、ここは実機で使用するものと同じ GNOME で起動するように設定を変更しましょう。 vncserverで起動するX-Windowのデスクトップ環境は、 ホームディレクトリ 以下の ".vnc/xstartup" に記述されていますので、この内容を書き換えます。 |
||||||||
| 普通はウインドウのクローズボックスでウインドウを閉じればOKです。 |
まず、いったんパソコンに表示しているVNCクライアントの画面を閉じてください。 |
||||||||
|
|
vncserver -kill :[ディスプレイ番号] Enter
次に
nano
エディタでホームディレクトリ以下の
".vnc/xstartup
を開きます
↓
nanoで".vnc/xstartup"を開く ".vnc/xstartup は、ご覧のとおり初期設定ファイルではなく シェル スクリプト なのですが、後半部分が "twm" を起動するための記述部分です。 |
||||||||
| vncseverのバージョンによってはここの部分の記述は若干異なることがありますが、後半部分はまとめて無効化し、前半の二行の有効化を行うという方法に変わりはありません。 |
そこでこの部分の行の先頭に "#" を付けて無効化し、このスクリプト内のコメント文に書かれているとおりに、コメント文以下の二行について先頭の "#" を削除して設定を有効化します。
システム標準のデスクトップで起動するように".vnc/xstartup"を修正 構築中のLinuxサーバー のシステムが標準で使用するX-Windowのデスクトップ環境(GNOME)は "/etc/X11/xinit/xinitrc" に記述されていますが、このように設定を行うことでXvncを起動するときに "/etc/X11/xinit/xinitrc" の内容が実行されるというわけです。
修正が終わったら
".vnc/xstartup"
を保存し、
nano
エディタを終了してください
そして再びvncserverを実行します。 |
||||||||
| 二度目以降のXvncの起動の場合、パスワードも設定済みですし必要なファイル類も作られていますのでメッセージはこのように簡単になります。 |
そしてもう一度VNCクライアントから接続してみてください。今度はおなじみのGNOMEのデスクトップが表示されるはずです。
設定修正後のVNCクライアント画面(GNOME) 以上でvnc-serverの基本的な環境設定は終わりです。
|
||||||||
vnc-serverの素朴な疑問既にお気付きの方も多いかもしれませんが、 vnc-server を利用してみるとちょっと不思議に思えることがあると思いますのでここでちょっと整理してみましょう。 このページの冒頭で少し触れていますが、 WBEL や CentOS に標準で インストール されるvnc-serverでは、 Xauthority という認証機能が デフォルト で有効になっています。 詳しいメカニズムの説明は割愛しますが、Xauthorityは ".vnc/.Xauthority" ファイルに含まれる認証データを参照し、ログイン許可を持つユーザーアカウントの認証データ(平たく言えばパスワード)と連携します。 つまりvnc-serverに接続するパスワードがあれば通常のログインパスワードは不要、というわけです。 ですから、vnc-serverに接続するためのパスワードは通常のログインパスワードと同程度に重要なものといえますから、特に "root" アカウント に対してvnc-serverを設定する場合は安易なパスワードを設定しないように気をつけてください。 2. サーバー機 はランレベル3で稼動しているのに、 X-Window の起動中の画面が見れないのはなぜ?。
WBELやCentOSをランレベル3
しかし VNC クライアント から接続するときは、そのスタートアップ画面をみることは通常ありません。 なぜでしょうか。 実は プロンプト から "vncserver" を実行すると、単に画面上にデスクトップを表示していないというだけでサーバー内部では "startx"コマンドの実行と同じ動作を開始する ことになります。 |
|||||||||
| ですから、vncserverを起動してから大急ぎでVNCクライアントから接続を行うと、ちょっとだけスタートアップ画面を見ることができたりします。 |
一般的なVNCの利用では、vncserverを実行してからVNCクライアントを起動し、それから接続操作を行う、という手順になりますが、実はこういった操作をしている間にも着々とX-Windowの起動 プロセス は進行していて、接続が完了する頃には既にデスクトップの起動が終わっている、ということになるわけです。 |
||||||||
|
|
これがVNC接続ではX-Windowのスタートアップ画面を見ることができない理由です。 ということはvnc-serverを利用する場合、VNCクライアントからの接続を行っていなくても、X-Windowを起動する分の メモリ は消費されていますし、それなりの動作負荷も発生していることになります( top コマンドなどで状況を確認することができます。 )。 ホスト機 の性能に余裕がある場合はともかくとして、vnc-serverを利用していないときはできるだけvncserverの実行は控え、不要になった Xvnc の デーモン は vncserver -kill :[ディスプレイ番号] Enter でこまめに終了させるよう心掛けましょう。 3.VNCクライアントからの接続中に通信が切れたらどうなる?。 VNCのサーバーとクライアントの関係は、「クライアントは、サーバー上で動作しているデスクトップ環境を見ながら、サーバーに対して操作指示を送っている。」というイメージになります。 つまり、「クライアント側で何かの処理を行い、その結果をサーバーに送る。」といったややこしい関係ではありませんから、VNCを使って作業している途中で通信が途絶えたとき、イメージとしては、 「実機を操作中に両手をバンザイして目をつぶった。」 ことと同じ状態と考えて構わないでしょう。 従ってVNCを利用中に通信が切れても、サーバーは「次の操作指示待ち」で待機していますから、通信が復帰したあとに再度VNCクライアントから接続を行えば、通信が切れたときのデスクトップの状態から操作を続行できるようになります。
|
||||||||
ディスプレイ番号とポート番号の関係についてvnc-server は同時に複数の Xvnc デーモン を起動し、複数の VNC クライアント からの接続を受けることができるようになっています。 試しに ユーザーアカウント "tanaka" と "nakai" でそれぞれvncserverを起動してみましょう。
このようにひとつの ホスト 上で複数のXvncを起動すると、起動した順に ディスプレイ番号 ( 赤字 の末尾の数字)が1から順に割り当てられます。 従って "tanaka" がVNCクライアントから接続するときは "web1.obenri.com:1" 、 "nakai" が接続するときは "web1.obenri.com:2" を指定することになります。 この ディスプレイ番号 はただの識別番号ということではなく、実は ポート番号 を意味します。 といってもポート番号1番、2番というわけではなく、実際にはポート番号 "5901番" 、 "5902番" を表す点に注意してください。 |
|||||||||
の説明のとおり、
JAVA
を利用して
Webブラウザ
をクライアントとして用いる
HTTP
/JAVAモード
としては
5800番
が使われます。
|
一般的なVNC接続では
そのため通常はVNC サーバー 側もVNCクライアント側もこの5900番が デフォルト として扱われるようになっていますから、操作のうえでは上の二桁を省略して ":1" 、 ":2" で利用できるように簡略化されているわけです。 従ってVNCサーバーやVNCクライアントに関する設定では ":1" 、 ":2" という表記が使われますが、他の アプリケーション が連携したり、 ルーター に ポートフォワーディング の設定を行う場合には、
ポート番号=5900+ディスプレイ番号
として設定しなければならない点に注意してください。
|
|
|
VNCクライアントの準備
<<Previous
|
Next>>
VNCサーバーのお便利設定
|
| このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。 |
| ”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。 |