VNC の入手先
「本題」に戻る
Xだけでも、Xプロトコル(というのかな?)を使ってリモートのXプログラムをローカルで実行できたりする機能があります。
が、はっきり言って今回は調べるのが面倒だったので。それは使いませんでした。
VNCの場合、「RFBプロトコル」という、「Remote FrameBuffer」とかいう仕組みを使ったプロトコルを利用しているそうです。
ようするに、Xをそのまま使うのではなく、RFBプロトコルでいろいろと使いやすくしてから利用しよう、という二段構えのシステム?みたいな。
んで、RFBプロトコルはオープンなので、Linux/Unix/Windows版とマルチに使えるそうです。んで、サーバープログラム・クライアントプログラムともにフロッピーディスク1枚に収まる程軽い。というわけで、Windows←→Linux/Unix が非常に簡単にできる仕組みだそうです。
とにかくVNCを入手しなければ始まりません。元々はAT&Tで開発されているようで、現在では
http://www.realvnc.com/
から入手できます。
DownloadページからLinux x86版のtarボールを入手し、展開します。今回入手したのは vnc-3.3.7-x86_linux.tar.gz でわずか 747KB程度。軽い。
んで、いつも通り「tar zxvf」あたりで解凍しますと・・・
-r--r--r-- 1 fenjin fenjin 18000 5月 11日 2002 LICENCE.TXT -r--r--r-- 1 fenjin fenjin 8829 2月 7日 2003 README -r-xr-xr-x 1 fenjin fenjin 1387941 3月 1日 2003 Xvnc* -r--r--r-- 1 fenjin fenjin 6548 3月 1日 2003 Xvnc.man drwxr-xr-x 2 fenjin fenjin 4096 3月 1日 2003 classes/ -r-xr-xr-x 1 fenjin fenjin 13849 3月 1日 2003 vncconnect* -r--r--r-- 1 fenjin fenjin 2223 3月 1日 2003 vncconnect.man -r-xr-xr-x 1 fenjin fenjin 1991 9月 20日 2002 vncinstall* -r-xr-xr-x 1 fenjin fenjin 19835 11月 2日 2002 vncpasswd* -r--r--r-- 1 fenjin fenjin 1537 8月 15日 2002 vncpasswd.man -r-xr-xr-x 1 fenjin fenjin 13819 10月 30日 2002 vncserver* -r--r--r-- 1 fenjin fenjin 4237 9月 23日 2002 vncserver.man -r-xr-xr-x 1 fenjin fenjin 144329 3月 1日 2003 vncviewer* -r--r--r-- 1 fenjin fenjin 14590 9月 20日 2002 vncviewer.manというように、すでにバイナリ形式のプログラムが入っていました。
VNC の使い方(vncserver, vncviewer)
「本題」に戻る
VNCを使ってログインしたいサーバーを「VNCサーバー」と呼ぶことにします。
VNCを使うクライアントマシンを「VNCクライアント」と呼ぶことにします。
最初にVNCサーバー側でVNCのサーバープログラムを起動する必要があります。このサーバープログラムの本体ファイルは「Xvnc」です。しかし、これを制御するためのPerlスクリプトが「vncserver」という名前で提供されており、こちらを適切なオプションを与えて実行することにより、VNCサーバープログラムを制御することができます。
READMEにも書いてありますが、通常は vncserver にオプションは必要ありません。
というわけで、まあ何はともあれ動かしてみましょう。VNC関連のプログラムは(vncinstallを除いて)基本的にすべて一般ユーザーでも実行できます。
まずはVNCサーバー側でサーバープロセス制御スクリプトである「vncserver」を実行します。
$ vncserver初めてvncserverを起動したときのみ、パスワードを要求します。
You will require a password to access your desktops.
Password: (パスワードを入力します。表示されません。) Verify: (確認のためもう一度入力します。表示されません。)
New 'X' desktop is seisyuu:1
Creating default startup script /home/fenjin/.vnc/xstartup Starting applications specified in /home/fenjin/.vnc/xstartup Log file is /home/fenjin/.vnc/seisyuu:1.log
$ ps ux ... fenjin 1707 0.1 0.6 8108 6452 ttyp0 S 17:06 0:00 Xvnc :1 -desktop X -auth /home/fenjin/.Xauthority ... ...このように、VNCサーバープログラム本体である「Xvnc」が適当なオプションでもって起動していることがわかります。
$ vncviewer --help ... usage: vncviewer [<options>] <host>:<display#> vncviewer [<options>] -listen [<display#>]だそうです。気になるのが「-listen」オプションですが、とりあえずこれは置いておきます。
$ vncviewer hoge.hoge.com:1みたく「ホスト名:VNCサーバー側のディスプレイ番号」みたいなオプションを指示すればどうにかなりそうです。
$ vncviewer localhost:1 VNC viewer version 3.3.7 - built Feb 28 2003 18:25:22 Copyright (C) 2002-2003 RealVNC Ltd. Copyright (C) 1994-2000 AT&T Laboratories Cambridge. See http://www.realvnc.com for information on VNC. VNC server supports protocol version 3.3 (viewer 3.3) Password: VNC authentication succeeded Desktop name "fenjin's X desktop (seisyuu:1)" Connected to VNC server, using protocol version 3.3 ...といった具合です。Password: のところには初めてvncserverを起動したときに入力したパスワードを打ち込みます。
$ vncserver -kill :1 Killing Xvnc process ID 1707「-kill」とコロンの間にスペース一個入ることに注意してください。
VNC の使い方(vncconnect)
「本題」に戻る
最後に「vncconnect」コマンドの使い方を説明します。
これはちょっと特殊なコマンドで、「サーバー側から」クライアントの vncviewer を叩くためのコマンドです。
試してみます。まずはVNCサーバー側で vncserver を実行します。
$ vncserver続いてVNCクライアント側で、先ほど無視した「-listen」オプションをつけて vncviewer を実行します。
New 'X' desktop is seisyuu:1
Starting applications specified in /home/fenjin/.vnc/xstartup Log file is /home/fenjin/.vnc/seisyuu:1.log
$ vncviewer -listen ... vncviewer -listen: Listening on port 5500 (flash port 5400) vncviewer -listen: Command line errors are not reported until a connection comes in.ここまでで一旦、vncviewerの出力するメッセージは停止します。この状態はいわゆる待機状態といえる状態です。
$ vncconnect -display :1 127.0.0.1:5500こうすると、クライアント側でウインドウが開き、VNCの画面が表示されます。