パスワードを忘れた? アカウント作成
747781 journal

Maxの日記: VNC with TIght VNC patch on Mandrake *解決*(revised)

日記 by Max

VNC 3.3.3 r2は昨年10月にリリースされているというのに、まだCookerにもあがっていない。
r2にあげようかどうしようかと、Mandrakeなソースrpmのspecファイルを読む。
Tight VNCという、ダイアルアップ接続時のケースなどでの帯域に考慮し、効率の良い
データ転送を行うためのパッチがあたっていることが判明。
どの程度有利かはここ参照。
生のデータと比べて転送量は1/6にまで改善されている。

またssh経由での接続についても強化がされているらしい。

$ vncviewer -tunnel -encodings 'tight copyrect' remotehost:1

で接続すれば、内部的にsshを呼び出してくれるのでわざわざsshであらかじめつないで
おく必要がない。確かに便利。だが、-localhostオプションをvncserverがちゃんと
さばいてくれないと意味がない。
ポート5901で相変わらずどこからの接続も受けてしまう。そこで、モウイチドよく
考え直す

うむ....sshでセッションを張るときの指定が間違っているのだ(汗

誤)$ ssh -L 5902:host:5901 host
正)$ ssh -L 5902:localhost:5901 host

相手サーヴァの/etc/rc.d/init.d/vncserverの内容のうち、
vncserverの起動行にこれまではずしていた"-localhost"を再度追加。
上記の正しい指定で

$vncviewer localhost:2

とやるとつながった。

Tight VNCパッチであらたに追加された -tunnel オプションはどういう
形で実装されているのかチェックすると環境変数VNC_TUNNEL_CMDに指定
されている内容を展開して、sshセッションを張るようになっている。

この指定がない場合は、

/usr/bin/ssh -f -L %L:%H:%R %H sleep 20

として処理する。

%L = ローカルマシンでlistenするポート番号
%H = リモートマシン名またはIPアドレス
%R = リモートマシンでlistenするポート番号

%LはTight VNCだとvncviewerが自動的にサーチする。
よって、vncviewerを起動する前に、

$ export VNC_TUNNEL_CMD="/usr/bin/ssh -f -L %L:localhost:%R %H sleep 20

とでもしておいて、設定すればよろし。この後通常の接続が

$ vncviewer host:1
vncviewer: ConnectToTcpAddr: connect: Connection refused
Unable to connect to VNC server

と蹴られ、

$ vncviewer -tunnel -encodings 'tight copyrect' :1

が接続できればOK。とりあえず、~/.bashrcにでも先のexportを入れておく。

typodupeerror

にわかな奴ほど語りたがる -- あるハッカー

読み込み中...