VNC (Virtual Network Computing)とは、リモートマシンのデスクトップを手元のマシンから使えるようにするものです。
つまり、telnetなどのようにリモートでコマンドしか使えないのではなく、リモートでGUIを使える機能を提供してくれるツールです。
手元のWindowsマシンから離れたLinuxマシンをGUIで操作する事も可能です。
もちろん、Linuxマシンからリモートで他のLinuxマシンを操作する事も可能ですし、Windows同士も然りです。
言葉だけでは分かりにくいので、実際の動作環境と、デスクトップ写真を挙げます。
次に示すネットワーク構成により、VNCのテストを行いました。
サーバー側には、Vine Linux のインストール以来、ディスプレイを接続せず、SSHで作業を行いました。
VNCが動作すれば、サーバーのディスプレイはますます必要なくなります。
さて、VNCの詳しい説明は、VNC のページに書いてありますので、そちらを参照してください。
VNC は、海外のソフトですが、日本語で解説があります。
内容にボリュームがありますが、要約すると以下のようになります。
- VNC には、サービスを提供する ”VNC server” とサービスを利用するだけの ”VNC viewer” がある
- VNC はフリーでダウンロードして使用できる(有償版は機能が多い)
- Windows、Linux など様々なOS に対応している
VNC はsever、viewer と機能が2つありますが、VNC をダウンロードするとすべて含まれています。
Windows にインストールする場合は、ダウンロードしたファイルからインストーラを起動させ、指示に従ってインストールするだけです。
以下に、LinuxでVNCを使用する場合の手順を掲載します。
まず、VNC を配布しているサイトからダウンロードします。
メールアドレスなどの入力を求められますが、特に入力しなくてもダウンロードできます。
フリー版をダウンロードしますが、配布ファイルの形式がいくつかあります。
Windows の場合にはexe 形式、Zip 形式の2通りがあり、Linuxの場合にはGZipped Tarfile 形式、RPM 形式の2通りがあります。
ここでは、Linux のtar 形式を選択してダウンロードします。
vnc-4_1_1-x86_linux.tar をダウンロードしたならば、インストール作業を行いますが、作業はroot で行います。
VNC のファイルがあるディレクトリで、以下のコマンドを入力していきます。
ここでは、VNC のファイルが /home/campus/ のディレクトリにある事を前提に話を進めます。
VNC のバージョンなどに応じてファイル名は変わりますので、注意してください。
まず、ダウンロードしたファイルを解凍します。
$ tar x2vf vnc-4_1_1-x86_linux.tar
解凍すると、同じディレクトリに vnc-4.0_x86_linux というディレクトリができます。
解凍した後、以下のようにして、このディレクトリに移動してVNC をインストールします。
$ cd vnc-4.0-x86_linux
$ ./vncinstall /usr/local/bin
インストールはこれで完了ですが、ユーザーがVNC を起動できるようにパスを通す必要があります。
ユーザーのホームディレクトリに移動し、 .bashrc というファイルを編集します。
エディタでファイルを開き、以下の1行を追加して上書き保存します。
$ PATH=$PATH:/usr/local/bin
記述したら、以下のように入力して設定を反映させます。
$ source /bashrc
VNCを利用するユーザーが他にもいる場合には、同じように各ユーザーのファイルを編集します。
この後は、次のコマンドでVNCサーバーを起動できます。
$ vncserver :1
末尾の数字は、ディスプレイの番号です。
複数のユーザーが同時にVNCを使用した場合に識別するための数字だと思われます。
つまり、VNCサーバーの番号と、VNCビューワの番号が一致しなければ、別なユーザーの画面が表示されます。
初めてVNCサーバーを起動した場合には、パスワードが聞かれます。
このパスワードはVNCの認証用なので、ビューワでログインする際のパスワードと同じになります。
また、VNC serverを終了する時は、以下のように入力します。
$ vncserver -kill :1
さて、VNCサーバーを起動しようとした所でエラーが出る事もあるかと思います。
私の場合には、
libstdc++-libc6.2-2.so.3: cannot open shared object file: No such file or directory
というエラーが出ました。
ライブラリは、 /usr/lib にあります。
一覧をリストコマンドで表示させてみると、確かに”libstdc++-libc6.2-2.so.3”がありません。
そこで、Vine LinuxのFTPサイト(RPMを配布しているページ)から、
libstdc++2_10-2.10.0-2vl21.i386.rpm
をダウンロードして以下のようにインストールします。(apt コマンドでインストールしてもOK)
バージョンなどは、適宜置き換えてください。
$ rpm -ivh libstdc++2_10-2.10.0-2vl21.i386.rpm
インストールされたライブラリは、 /usr/lib にあります。
一覧をリストコマンドで表示させてみると、確かに”libstdc++-libc6.2-2.so.3”がありません。
インストールした後に、存在しないと表示された”libstdc++-libc6.2-2.so.3”と、インストールしたライブラリの関連付けを行います。
関連付けは、以下のようにリンクする形で行います。
$ ln -s libstdc++-3libc6.3-2-2.10.0.so libstdc++-libc6.2-2.so.3
関連付けは完了です。
これでVNC サーバーが実行できるようになると思います。
VNC サーバーのインストールが完了したら、VNCビューワで動作を確認してみます。
Windowsの場合は、インストーラに従ってインストールするだけなので、難しい事はありません。
Linuxの場合ですが、上記の手順で既にVNCビューワのインストールも済んでいます。
では、VNCサーバーをインストールしたVine Linuxを、VNCビューワをインストールした別なマシンで操作してみす。
テスト環境は以下の通りで、サーバーはVine Linux、クライアントがWindowsの場合とVine Linuxの場合それぞれ確認します。
- ・ クライアントがWindows の場合
-
まず、WindowsにVNCビューワをインストールしてVine Linuxをリモートで動作させる場合について手順を説明します。
VNCのファイルをダウンロードした後は、ファイルを実行し、インストーラの指示に従ってインストールします。
インストール後は、VNCを起動し、VNCサーバーをインストールしてあるマシンのIPアドレスを指定します。
IPアドレスの後ろには、コロンで区切ってディスプレイ番号を入力します。
この番後は、サーバー側で、VNC serverを起動したときのディスプレイ番号と同じです。
入力すると接続を開始し、パスワードの入力に移ります。
IPアドレスが間違っていたり、VNC serverが起動していない場合には、エラーが返ってきます。
成功すれば、次のようにVNCによってサーバーのデスクトップ画面が表れます。
WindowsデスクトップにおけるWindowの一つにサーバーのデスクトップが表示されます。
画面は表示されたものの、見慣れないデスクトップになるかと思います。
これは、VNCの設定がデフォルトで”twm”というデスクトップが起動するようになっているためです。
Vine LinuxのGNOMEを使用するのであれば、この設定を変更すれば良いのです。
この問題は、後述の手順で解決できます。
- ・ クライアントがVine Linux の場合
-
Vine Linuxをクライアントとして、VNCサーバーにアクセスする手順について説明します。
VNC viewerのインストールは、VNC serverと同様です。
起動は以下のコマンドで行いますが、VNC serverと同様のエラーが出る場合には、VNC serverと同じようにライブラリを追加する事により回避できます。
$ vncviewer
入力すると、VNC serverのIPアドレスと、ディスプレイ番号、続けてパスワードの入力が求められます。
通信エラーが出る場合には、入力が間違っていないか、VNC serverを起動しているか、などを確認します。
接続が成功すれば、次のようにリモートデスクトップが実現します。
VNCビューワをの項で、VNCのデフォルト設定ではデスクトップ画面が”twm”である事について触れました。
ここでは、そのデスクトップを”GNOME”にする手順を解説します。
設定を変更することにより、VNCでログインした時点でGNOMEが立ち上がるようになります。
手順は、以下の通りです。
$ cp /etc/X11/xinit/xinitrc /home/ユーザ名/.xinitrc<--- xinitrcをホームディレクトリに.xinitrcという名前に変更してコピー
$ cd /home/ユーザー名/.vnc <--- 作業ディレクトリへ移動
$ mv xstartup xstartup.org <--- ファイル名の変更
$ ln -s /home/ユーザー名/.xinitrc xstartup <--- X のスタートアップのリンク付け
以上の流れで、VNCでGNOMEを利用する事ができるようになります。
次の画像は、WindowsでVNC viewerを起動した場合の画像です。
VNC は、ビューワをインストールしていればVNC アプリケーションだけでなく、ブラウザからも利用する事ができます。
ブラウザにはJava がインストールされている必要があります。
VNC の専用ビューワで使用するポート番号は5900番+ディスプレイ番号ですが、ブラウザでは5800番+ディスプレイ番号となります。
ブラウザでは、80番以外のポートに接続する場合には、ポート番号を明確に示さなければなりません。
従って、次のようにIP アドレスとポート番号をコロンで区切って、アドレス欄に入力します。
http:// は省略可能です。
(http://)IP アドレスまたはホスト名:使用するポート番号
例えば、VNC サーバをディスプレイ番号1で起動させた場合には、VNC ビューワでは5901番ポート、ブラウザでは5801番ポートのどちらかで接続できます。
VNC サーバを起動させているコンピュータのIP アドレスがXXX.XXX.XXX.XXX で、ディスプレイ番号が1の場合、ブラウザのアドレス欄には次のように入力します。
(http://)XXX.XXX.XXX.XXX:5801
入力すると認証に移ります。
使い方はVNC ビューワと同じで、Option メニューで各種設定が行えます。
VNC ビューワを使用する場合と、ブラウザを使用する場合では、ポート番号が異なるので、ファイアウォールやポートフォワードの設定には注意が必要です。
VNC は便利なツールですが、使用するにはいくつか注意点があります。
1つ目は、セキュリティの問題です。
VNC は暗号化も何もされないために、サービスの隙を突かれる危険性があります。
従って、ファイアウォールの内側だけで使用する、必要ない時はVNC server を切るなどの対策が必要です。
2つ目は、動作速度の問題があります。
VNC はリモートでGUI環境を実現するために、コマンドベースのリモート操作よりも動作が重いです。
通信が重い上に、加えてハードウェアのスペックが低い場合には、レスポンスが良くはありません。
これらの問題を解決する方法として、VNC とSSH を組み合わせて通信を行う方法があります。
この方法を利用すれば、セキュリティも向上し、動作も比較的軽良くなります。
また、動作速度に関して改善された”TightVNC”というものもあります。