VNC - Virtual Network Computing


作者AT&T ケンブリッジ研究所
ダウンロード
関連サイトVNCのページ
RealVNC
学内パスたぶん /home/student/s1100051/share/sol8/bin/vncserver
学内管理者たぶん s1100051
Table of Contents

解説 Edit

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 クライアントを起動できます。

written by s1080134.

インストールメモ Edit

# 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
written by s1080134.

標準環境にある VNC を使用する方法 Edit

標準環境では /opt/sfw/bin 以下に必要なソフトウェアが揃っているので, こちらを利用する方法を紹介する。
*/opt/sfw/binに置いてあるVNCは旧バージョンです。
ISTCが用意してくれたVNCが/usr/local/vncにあります 
以下 /opt/sfw/binを/usr/local/vncに読み替えてください。

また、必ずvncserverを終了させることを忘れないでください。

なお, 上記の 解説インストールメモ を辿らなくても こちらの方法だけで出来るように解説してみる。

準備する Edit

準備としては所定へのパス設定と, 標準環境での ~/.xinitrc に相当する ~/.vnc/xstartup ファイルの設定を行う必要がある。

必要なファイルへのパスを設定する Edit

適当なテキストエディタで必要なパスを設定する。

% 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 ファイルを作成する Edit

まずは ~/.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

基本的な使い方 Edit

VNC の基本的な使い方は以下の通りである。

  1. リモートホストで VNC Server を起動する。
  2. ローカルホストで VNC Viewer を起動, リモートホストに接続する。
  3. 使用後, VNC Server を終了する。

ただし VNC はデータを平文で送受信するためセキュリティ上あまり良くない。 そこで, ある程度それを確保した使い方を紹介する。

ある程度セキュリティを確保した使い方 Edit

リモートホストに SSH トンネル付きで接続する。 Edit

PuTTYjp なら 接続 -> SSH -> トンネル で設定する。 送り先 には以下のように入力する。

[リモートホスト名]:[ポート番号]

例えばリモートホスト名が hoge01 でディスプレイ番号を 1 とすると以下のように入力すれば良い。 (ディスプレイ番号に 5900 を足した値になる。)

hoge01:5901

源ポートにはローカルホストで使用するポートを入力する。 例えば単純に 50000 足して 55901 にしてみよう。

55901

ここまで入力したなら 追加 をクリックして, フォワードするポート一覧 に以下の行が追加されれば良い。

L55901 hoge01:5901

リモートホストで VNC Server を起動する。 Edit

リモートホストにログインしたら VNC Server を起動しよう。 ただし, 詳しいオプション等については他に譲る。 なお, 初回起動時には VNC 接続用のパスワードを設定する。 (システムにログインするパスワードとは異なることに注意する。)

% vncserver

ローカルホストからリモートホストに接続する。 Edit

ローカルホストで VNC Viewer を起動して, 先ほど設定した SSH トンネルを経由してリモートホストに接続する。 なお, ここで聞かれるパスワードは先ほど設定したものを使用する。

% vncviewer localhost:55901

使用後は VNC Server を終了する。 Edit

付けっ放しは他ユーザーへの支障となるため 必ず 終了させること。 (exit では VNC Server を終了できないことに注意する。)

% vncserver -kill :1

なお, この方法は SSH トンネルを使用しているため, PuTTYjp を閉じると VNC への接続も出来なくなることに注意すること。


xrea