トップページ>>>「いろいろ」目次

VNCの使い方・その2

初版作成:2003/09/07

目次

  1. 前書き
  2. 本題
  3. 後書き或いは感想

前書き

 VNCの奇妙さに惹かれて、思ったよりも簡単そうだったこともありいろいろ試してみました。
 といってもほとんどVNCのサイトのドキュメントページに解説してあるものばかりですが。
 とりあえず、SSH越しに使えないかなとWindowsから頑張ってみたり。あとは画面サイズ変更できないかな、とか、ウインドウマネージャ変更できないかな。とか。

 その結果として、実質上今回でVNCに関しては一通り使えるようになってしまいました。
目次に戻る

本題

  1. WindowsクライアントからSSH越しにVNCを使う
  2. VNCのウインドウサイズを変更してみる
  3. VNCのウインドウマネージャを変更してみる

WindowsクライアントからSSH越しにVNCを使う
「本題」に戻る

 今回はWindowsからだったらほぼ定番の、TeraTerm Pro とそれのSSH版である TTSSH を使ってSSH転送機能による VNC over SSH を試してみました。
 TeraTerm Pro と TTSSH 及びその日本語化(兼諸問題フィクス)パッチの入手やインストール方法については、至る所で記述されているのでここではわざわざ述べません。入手だけならVectorで検索すれば問題ないと思います。
 というわけで、TeraTerm Pro と TTSSH のインストールはすでに完了しているものとします。

 まず、VNC over SSH の基本原理の説明を簡単に済ませましょう。SSHにはSSH転送機能(SSHポートフォワード)と呼ばれる機能があります。下の図を見てください。


 このように、あるポート(上の図では5902番)を使ったやりとりを、SSH暗号化をかけた上で、別のポートへ転送する機能のことです。

 SSH転送はクライアント側で実装すればよく、サーバー側(上の図ではvncserver側)では特に設定は入りません。

 んで、ですね。ポート番号に注意していただきたいのです。
 VNCではポート番号を基本的に、5900+ディスプレイ番号のポートを使用します。つまり、vncserverコマンドでもし「:1」とか返ってきたら、5900+1=5901番がVNCの使うポート番号になります。「:2」が返ってきたら5900+2=5902番になります。
 ここでUNIX/Linux とWindows の差がちょこっとでます。vncserverを実行しているVNCサーバーがWindowsの場合、通常ディスプレイ番号が0番になるそうです。んで、UNIX/LinuxのVNCサーバーの場合、通常ディスプレイ番号が1番になります。
 従って、(もしサーバー側でFireWallの関係で特殊なポート番号に指定しない限り)通常は Windowsサーバーなら 5900 番、UNIX/Linuxなら 5901 番がVNCの利用する通信ポートになります。

 というわけで、TTSSHを使った VNC over SSH の設定を実際にやってみます。
 まず、TTSSHを起動します。最初に接続先を求めるダイアログボックスが開かれますが、ここは一旦「キャンセル」ボタンをクリックします。「未接続」状態のTeraTermウインドウが表示されます。
 続いて「設定」メニューの「SSH転送」というそのものズバリを選択します。「TTSSHポート転送設定」なるダイアログボックスが表示されますので、「追加」をクリックします。
 「SSHポート転送」の設定ダイアログボックスが表示されます。ここで、下のようなポート転送設定をします。192.168.2.20が今回使用するVNCサーバーになります。


 先ほど説明しましたとおり、実際にVNCサーバーと通信するポート番号が5901番になっている点にも注意してください。

 追加したら、「TTSSHポート転送設定」ダイアログボックスはこんな風になりました。5902番が192.168.2.20宛の5901番に転送されるよう、設定されていることがわかります。「OK」ボタンをクリックします。


 ではサーバー側でvncserverを実行します。UNIX/Linuxを使ったので、予想通り「:1」となり、ディスプレイ番号は1番。よってポート番号5901番になります。
 いよいよクライアント側から接続してみます。vncviewerを実行します。接続先に注意してください。ポート転送を行うマシンはWindowsマシン自身ですから、IPアドレスは127.0.0.1、ポート番号は5902番ですから、逆算してディスプレイ番号は2番になります。


 パスワードが聞かれてきますが、ここではvncserver側で登録したパスワードで大丈夫です。SSHのパスワード・パスフレーズとは無関係です。
 もしポート番号・IPアドレス・ディスプレイ番号に間違いがなければ、無事ディスプレイが表示されるはずです。

 間違って「192.168.2.20:1」などとすると、SSH転送機能を使わずにVNCサーバーにつながってしまいます。注意してください。SSH転送はあくまでも、クライアント側から明示的に用いなければ実行されません。サーバー側ではいつも通り、暗号化無しの 5901 番で接続を受け付けてくれています。(ではvncserverのパスワードが危険ではないか?という疑問が生じますが、どうやら乱数を使って毎度毎度何らかの暗号化を施してからパスワードをやりとりしているようなので、そこは安心して良いかもしれません。問題は認証終了後だということです。)

 これで Windowsクライアントを利用した VNC over SSH の使用方法は一旦おしまい。UNIX/Linuxクライアントの場合は OpenSSH でも入れて、「ssh -L 5902:localhost:5901 vncserver」とでも打ち込めば大丈夫みたいです。

VNCのウインドウサイズを変更してみる
「本題」に戻る

 vncserverはデフォルトでXGA, 1024x768の大きさでXを起動します。
 ところが、もしもクライアント側もXGAだった場合、VNC画面の脇にスクロールバーが表示されてしまうんですよねえ。「全画面表示」とかいう機能もなさそうですし。
 というわけで、せめて SVGA 800x600 の大きさでXを起動させたいものです。

$ vncserver -geometry 800x600
 以上。

VNCのウインドウマネージャを変更してみる
「本題」に戻る

 いつまでも twm を使いたくはありません。いや、twmが駄目だと言っているわけではないのです。fvwmやblackboxやKDEなどを使えるなら、素直にそちらを使おうじゃないか・・・という話です。
 これも非常に簡単でした。

 vncserverがXを起動した後に実行するスクリプト、すなわち通常のXで言うところの「.xinitrc」ファイルは~/.vnc/xstartupスクリプトです。

 結局、~/.xinitrc を ~/.vnc/xstartup へコピーしてしまえば良いわけです。

 実行結果です。フォント情報は崩れてしまいますが、KDEでもほぼ実用に耐えうる画面です。お好みにより、vncserverの時だけblackboxやfvwmなど軽めのWMを実行するようにすればまた楽しみも増えるでしょう。元の.xinitrcが良くできているおかげで、日本語入力もATOKXなりCannaなりを使って利用できます。(さすがに商用のXのように、Windows上のIMEからそのまま入力というわけにはいきませんが・・・)


 ちなみに背景画像は十四羊交差点の暑中見舞い画像より頂きました。

後書き或いは感想

 う〜〜ん。なかなかVNCって、おもしろいツールですねえ。んでもって、プログラム自体のファイルサイズも小さい。Windows用でも600KB無いし。Windows用のクライアントだけなら、zip圧縮ファイルで30KB無い!それでいて、この機能・・・。VMwareや商用Xに比べるとクライアントホストOSとのデータのやりとりや、クライアントホスト上のIMEから直接日本語入力できないなど常用する分にはいろいろと機能不足の面もありますが、いざというときの十徳ナイフとしては必要十分でしょう。大助かりです。リモートでXがこんなに簡単に使えるだけでも。
 というわけで、これで一通りVNCは使えるようになったと思います。ぜひ、サーバー管理のお供に。あるいは Linux の実験・練習をWindowsから。とか。使い道はいろいろ広がりますので、試してみてください。
 というわけで今回はこの辺で失礼します。
目次に戻る

トップページ>>>「いろいろ」目次