Diff of UNIX/学生ツール/ネットワーク/VNC


TITLE:VNC - Virtual Network Computing
#navi(UNIX/学生ツール)
|~作者|AT&T ケンブリッジ研究所|
|~ダウンロード||
|~関連サイト|[[VNCのページ>http://www.sra.co.jp/people/akira/vnc/]]&br;[[RealVNC>http://www.realvnc.com/download.html]]|
|~学内パス|たぶん /home/student/s1100051/share/sol8/bin/vncserver|
|~学内管理者|たぶん s1100051|
#contentsx

*解説 [#s969e8a8]
VNC を使うことによって、リモートマシンのデスクトップをローカルマシンから使うことができるようになります。
[[Google 検索: VNC>http://images.google.co.jp/images?svnum=100&hl=ja&lr=lang_ja&safe=off&c2coff=1&q=VNC&btnG=Google+%E6%A4%9C%E7%B4%A2]]
のようになります。

まず 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>http://www.realvnc.com/download.html]] からダウンロードできます。)
 [hostname]:[display#]
に接続すればリモートマシンのデスクトップを表示できます。
 [hostname]:[port#]
のように接続することも可能です。
VNC サーバーのポート番号は ディスプレイ番号 + 5900 になります。
ちなみに VNC サーバーがたてた X サーバーのポート番号は ディスプレイ番号 + 6000 です。

VNC サーバーの終了は
 % vncserver -kill :[display#]
のように行います。必ず終了しましょう。

パスワードを変更する際は
 % vncpasswd
コマンドを使いましょう。

また、他のマシンに VNC サーバーがたっているのならば、
 % vncviewer [hostname]:[display#]
のようにして接続すれば VNC クライアントを起動できます。

RIGHT:written by s1080134.
*インストールメモ [#x355df8d]
#pre{{{
# 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
}}}

RIGHT:written by s1080134.
*標準環境にある VNC を使用する方法 [#w4707f63]
標準環境では /opt/sfw/bin 以下に必要なソフトウェアが揃っているので,
こちらを利用する方法を紹介する。~
''&color(Red){*/opt/sfw/binに置いてあるVNCは旧バージョンです。};''~
''&color(Red){ISTCが用意してくれたVNCが/usr/local/vncにあります };''~
''&color(Red){以下 /opt/sfw/binを/usr/local/vncに読み替えてください。};''~
~
''&color(Red){また、必ずvncserverを終了させることを忘れないでください。};''

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

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

***必要なファイルへのパスを設定する [#fe6fc97d]
適当なテキストエディタで必要なパスを設定する。
 % emacs ~/.cshrc

最後尾にこんな感じで書いておけば良い。
#pre{{{
## 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 ファイルを作成する [#h1e89618]
まずは ~/.vnc ディレクトリを作成する。
 % mkdir ~/.vnc

基本的に普段使っているファイルでも良いが,
ここでは skel からコピーしてみる。
ただし, コピー先のファイル名に注意する。
 % cp /home/student/stdskel/.xinitrc ~/.vnc/xstartup

xstartup ファイルに実行許可を与える。
 % chmod u+x ~/.vnc/xstartup

ls コマンドで確認できる。オーナーに実行許可が入っていれば良い。
#pre{{{
% ls -l ~/.vnc/xstartup
-rwx------ 1 s1000000 student 1957 May  5 01:24 /home/student/s1000000/.vnc/xstartup
}}}

**基本的な使い方 [#kd5738b4]
VNC の基本的な使い方は以下の通りである。
+リモートホストで VNC Server を起動する。
+ローカルホストで VNC Viewer を起動, リモートホストに接続する。
+使用後, VNC Server を終了する。

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

**ある程度セキュリティを確保した使い方 [#o38d4405]
***リモートホストに SSH トンネル付きで接続する。 [#a354504b]
PuTTYjp なら ''接続 -> SSH -> トンネル'' で設定する。
''送り先'' には以下のように入力する。
 [リモートホスト名]:[ポート番号]

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

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

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

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

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

***使用後は VNC Server を終了する。 [#g0ddd115]
付けっ放しは他ユーザーへの支障となるため ''必ず'' 終了させること。
(exit では VNC Server を終了できないことに注意する。)
 % vncserver -kill :1

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

#navi(UNIX/学生ツール,,footer)
xrea