VNC - Virtual Network Computing
作者 | AT&T ケンブリッジ研究所 |
---|---|
ダウンロード | |
関連サイト | VNCのページ![]() RealVNC ![]() |
学内パス | たぶん /home/student/s1100051/share/sol8/bin/vncserver |
学内管理者 | たぶん s1100051 |
Table of Contents |
解説 
VNC を使うことによって、リモートマシンのデスクトップをローカルマシンから使うことができるようになります。
Google 検索: VNC
のようになります。
まず vncserver から VNC 本体である Xvnc を起動できるように Xvnc へのパスを通さなければいけません。
% setenv PATH=${PATH}:~/bin
ホームディレクトリ以下の bin ディレクトリに Xvnc がインストールされているものとしています。そして、
% vncserver
で VNC サーバーを起動することができます。
% vncserver -geometry 1024x714 :1
のようにデスクトップの大きさを指定したり、ディスプレイ番号を指定したりもできます。ちょうどスクロールバーがなくなる大きさにすると使いやすいと思います。
そして $HOME/.vnc/xstartup ファイルを編集します。VNC での .xinitrc に相当します。.xinitrc を実行するようにしてあげましょう。
% chmod u+x $HOME/.xinitrc % emacs $HOME/.vnc/xstartup & #!/usr/bin/sh exec $HOME/.xinitrc
$HOME/.vnc/xstartup には実行権限を与えてください(補足:s1100051)。
% chmod u+x $HOME/.vnc/xstartup
これだけ書いて上げればよい予定だったのですが、なぜか環境変数 DISPLAY を自分で設定しなければならないようです。Linux ではそんなことはなかったのですが・・・自動的にその辺の処理はしてくれよ。といったところです。
#!/usr/bin/sh DISPLAY='localhost:1' export DISPLAY exec $HOME/.xinitrc
しかしこれでは 1番ディスプレイしか使えないことになってしまうので、
#!/usr/bin/csh set file = `ls $HOME/.vnc/*.pid | head -1 | grep $HOST` if ( "$file" != "" ) then set file = $file:r set file = $file:t set file = `echo $file | sed 's/^.*://'` setenv DISPLAY localhost:${file} sleep 1 exec $HOME/.xinitrc >& $HOME/.vnc/error endif
のような内容にしました。かなり無理やりです。 vncserver を立ち上げると $HOME/.vnc 内に [hostname]:[display#].pid というファイルが作成されることを利用しました。 また .xinitrc のエラーメッセージを $HOME/.vnc/error というファイルに吐き出すようにしました。 sh スクリプトのままがよかったのですが csh スクリプトです。なぜか sh だとうまくいかないことがありまして。 さらに [hostname]:[display#] ではだめで、 localhost:[display#] にしなければうまくいかないというよくわからない事態に 出会ってしまいました。
このサーバーにつなぐには、他のマシンに vnc クライアント (vncviewer) をインストール、起動し、(RealVNC からダウンロードできます。)
[hostname]:[display#]
に接続すればリモートマシンのデスクトップを表示できます。
[hostname]:[port#]
のように接続することも可能です。 VNC サーバーのポート番号は ディスプレイ番号 + 5900 になります。 ちなみに VNC サーバーがたてた X サーバーのポート番号は ディスプレイ番号 + 6000 です。
VNC サーバーの終了は
% vncserver -kill :[display#]
のように行います。必ず終了しましょう。
パスワードを変更する際は
% vncpasswd
コマンドを使いましょう。
また、他のマシンに VNC サーバーがたっているのならば、
% vncviewer [hostname]:[display#]
のようにして接続すれば VNC クライアントを起動できます。
インストールメモ 
# VNC install memo wget http://www.realvnc.com/dist/vnc-3.3.7-sparc_solaris_2.5.tar.gz gtar zxvf vnc-3.3.7-sparc_solaris_2.5.tar.gz cd vnc-3.3.7-sparc_solaris_2.5/ ./vncinstall /home/student/s1080134/usr/Solaris/bin/ /home/student/s1080134/usr/Solaris/man cd .. \rm -r vnc-3.3.7-sparc_solaris_2.5* ## installed bin/Xvnc bin/vncviewer bin/vncpasswd bin/vncconnect bin/vncserver man/man1/... ## The path to Xvnc is required to start-up vncserver. setenv PATH=${PATH}:/home/student/s1080134/usr/Solaris/bin setenv MANPATH=${MANPATH}:/home/student/s1080134/usr/Solaris/man
標準環境にある VNC を使用する方法 
標準環境では /opt/sfw/bin 以下に必要なソフトウェアが揃っているので,
こちらを利用する方法を紹介する。
*/opt/sfw/binに置いてあるVNCは旧バージョンです。
ISTCが用意してくれたVNCが/usr/local/vncにあります
以下 /opt/sfw/binを/usr/local/vncに読み替えてください。
また、必ずvncserverを終了させることを忘れないでください。
なお, 上記の 解説 や インストールメモ を辿らなくても こちらの方法だけで出来るように解説してみる。
準備する 
準備としては所定へのパス設定と, 標準環境での ~/.xinitrc に相当する ~/.vnc/xstartup ファイルの設定を行う必要がある。
必要なファイルへのパスを設定する 
% emacs ~/.cshrc
最後尾にこんな感じで書いておけば良い。
## path to /opt/sfw/bin set OPT_SFW = "/opt/sfw/bin" if (-r ${OPT_SFW}) then set path = ( $path ${OPT_SFW} ) endif
設定ファイルをリロードする。なお, 再ログインでも反映される。
% source ~/.cshrc
設定を確認する。設定したパスが最後尾に付いていれば良い。
% echo $path
which コマンドを試して, それぞれへのパスが返ってくることを確認しよう。
% which Xvnc vncserver
~/.vnc/xstartup ファイルを作成する 
まずは ~/.vnc ディレクトリを作成する。
% mkdir ~/.vnc
基本的に普段使っているファイルでも良いが, ここでは skel からコピーしてみる。 ただし, コピー先のファイル名に注意する。
% cp /home/student/stdskel/.xinitrc ~/.vnc/xstartup
xstartup ファイルに実行許可を与える。
% chmod u+x ~/.vnc/xstartup
ls コマンドで確認できる。オーナーに実行許可が入っていれば良い。
% ls -l ~/.vnc/xstartup -rwx------ 1 s1000000 student 1957 May 5 01:24 /home/student/s1000000/.vnc/xstartup
基本的な使い方 
VNC の基本的な使い方は以下の通りである。
ただし VNC はデータを平文で送受信するためセキュリティ上あまり良くない。 そこで, ある程度それを確保した使い方を紹介する。
ある程度セキュリティを確保した使い方 
リモートホストに SSH トンネル付きで接続する。 
PuTTYjp なら 接続 -> SSH -> トンネル で設定する。 送り先 には以下のように入力する。
[リモートホスト名]:[ポート番号]
例えばリモートホスト名が hoge01 でディスプレイ番号を 1 とすると以下のように入力すれば良い。 (ディスプレイ番号に 5900 を足した値になる。)
hoge01:5901
源ポートにはローカルホストで使用するポートを入力する。 例えば単純に 50000 足して 55901 にしてみよう。
55901
ここまで入力したなら 追加 をクリックして, フォワードするポート一覧 に以下の行が追加されれば良い。
L55901 hoge01:5901
リモートホストで VNC Server を起動する。 
リモートホストにログインしたら VNC Server を起動しよう。 ただし, 詳しいオプション等については他に譲る。 なお, 初回起動時には VNC 接続用のパスワードを設定する。 (システムにログインするパスワードとは異なることに注意する。)
% vncserver
ローカルホストからリモートホストに接続する。 
ローカルホストで VNC Viewer を起動して, 先ほど設定した SSH トンネルを経由してリモートホストに接続する。 なお, ここで聞かれるパスワードは先ほど設定したものを使用する。
% vncviewer localhost:55901
使用後は VNC Server を終了する。 
付けっ放しは他ユーザーへの支障となるため 必ず 終了させること。 (exit では VNC Server を終了できないことに注意する。)
% vncserver -kill :1
なお, この方法は SSH トンネルを使用しているため, PuTTYjp を閉じると VNC への接続も出来なくなることに注意すること。