« 2006年9月3日 - 2006年9月9日 | トップページ | 2006年10月8日 - 2006年10月14日 »

2006年9月12日 (火)

Vine linuxをau携帯から使う -- VNCのインストール

  VNCとはVirtual Network Computingの略で、リモートマシンのデスクトップを手元のマシンから 使えるようにするものです。これを使うと、遠隔地にあるマシン(例えば職場のマシン)のデスクトップを手元のマシン(例えば自宅のマシン)から操作することができます。プロトコル自体は案外簡単なものだそうで、Windows、UNIXなどプラットホームを越えて利用できます。携帯電話からも使えるとのことで、linuxマシンにインストールしてみました。以下はその概要と顛末です。色々間違いもあるかもしれません。

VNCサーバーマシンへ(Vine linux3.2)のx11vncのインストール

  デスクトップを見せるマシンには、VNCサーバーをインストールして起動しておく必要がある。いろんなサーバーソフトがあるようだが、今回はx11vnc(http://www.karlrunge.com/x11vnc/)を用いた。

  x11vncにはrpmが用意されている。上記ホームページで紹介されている
http://dag.wieers.com/packages/x11vnc/あたりから、Redhat7用のrpmをダウンロードし、以下のようにインストールする。(もちろんrootで)
      $rpm --install x11vnc-0.8.1-1.rh7.rf.i386.rpm
私の環境ではすんなりインストールできた。
  続いてx11vncを起動する。こちらは一般ユーザーで。
      >x11vnc -display :0 -forever
とすればよい。ずらずらとメッセージが出るが、最後に
      PORT=5900
と表示されれば起動成功である。
-foreverオプションを付けないと、外部からの接続が切れるとx11vncが終了する。-foreverオプションを付けるとx11vncが終了しないので、再度接続が可能となる。
これで、VNCビューアーから接続すればデスクトップが表示されるはずである。

Vine linuxにVNCビューアーをインストールしてみる

  せっかくサーバーが立ち上がったのだから、接続テストをしてみよう。もし手近に別のマシンがあるのなら、そちらにVNCビューアーをインストールすればテストができる。
  linux用のVNCビューアーにも色々なものがあるようだが、x11vncのページでお薦めとされているTightVNC Viewer(http://www.tightvnc.com/)をインストールした。こちらもサイトにRedHat7用のrpmが用意されているので、これをダウンロードし、インストールする。
      $rpm --install tightvnc-1.2.9-1.i386.rpm
ただ単に
     >vncviewer
と起動すると、サーバー名を入力するダイアログが出るので、相手のIPアドレスかマシン名を入力すれば良い。あるいは、相手が192.168.1.1だとすると
     >vncviewer 192.168.1.1:0
とすればすぐに接続することができる。私は職場のマシンのデスクトップをVPN経由で自宅のマシンから接続してみたが、これはなかなか感動的である。あたかも仮想マシンのように、リモートホストののデスクトップが表示されるのである。一応、マウスで一通りの操作はできる。キーボード入力についても概ね目の前にデスクトップがある感覚で使える。

VNCループのこと

  さて、ここで野蛮な興味ではあるが、VNCサーバーが動いているのと同じマシンのX上でVNCビューアーを起動したらどうなるだろうか?とんでもないことが起きそうな予感がするのだが...。というわけでやってみた。次のようにビューアーを起動する。
     >vncviewer localhost:0
結果は予想通り、ビューアーはちゃんと立ち上がるが、そこに自分のデスクトップが表示されると、またそれが表示され...と、つまりテレビにつないだビデオカメラでテレビの画面を撮影するようなことになって止まらない。Wikipediaによると、こういう現象をVNCループと言うらしい。こうなったら、落ち着いて、CTRL-Cでvncviewerをkillする。ばかばかしいが、なるべきことにちゃんとなるのがうれしい。

セキュリティーのこと

  以上の方法では、まったく認証などが無いため、もし外部からVNCポートにアクセスされればデスクトップを見られ放題、いじられ放題である。そのため、サーバー側にVNCパスワードを設定しておくべきである。パスワードはファイルに保存するが、そのファイルを作るには
     >x11vnc -storepasswd
としてx11vncを起動し、尋ねてくるパスワードを入力する。ファイルを指定しなければ、~/.vnc/passwdというファイルに(多分暗号化された)パスワードが保存される。このパスワードによる認証はデフォルトでは有効にならず、次のように
-rfbauthオプションで明示的に指定しなければならない。
     >x11vnc  -display :0 -forever -rfbauth .vnc/passwd
あるいは
     >x11vnc  -display :0 -forever -usepw
  この方法でVNC接続の認証は可能となるが、通信内容は暗号化されない。これでは、インターネット上から遠くのホストを利用する場合、大いに問題がある。通信内容を暗号化するには、sshによるポートフォワーディングを利用する。まず、VNCサーバーマシン上でsshが使える状態であるという前提で、クライアントマシンから次のようにx11vncを起動する。
     >ssh -L 5900:localhost:5900 far-away.east 'x11vnc -localhost -display :0 -use\pw'
-localhostオプションはVNCへの接続をlocalhostのみに許可するオプションで、この場合必要なのかどうかはちょっと頭がこんがらがってよくわからなくなってしまった。sshポートフォワーディングを行うならば、接続はlocalhostのsshサーバーからというのは確かだが。
  こうしておいて、クライアントマシンから接続すれば、確かに接続できる。この場合、VNCサーバーはクライアントマシンから見たlocalhostになる。...かなりこんがらがってきた。
  ただし、今回インストールしたTightVNCのビュアーは上記のsshポートフォワーディングを自動で行う機能がある。この場合、まずVNCサーバーでは次のように普通にx11vncを起動しておく。
     >x11vnc -localhost -display :0 -usepw -forever
この場合の-localhostオプションは重要である。これがないとどこからの接続も受け付けることになり、それではsshポートフォワーディングを行うという意志表示が無いに等しい。-usepwも無ければセキュリティー無しの起動状態と全く変わらなくなってしまう。こうしておいて、クライアントのTightVNCビュアーを次のように起動する。
     >vncviewer -via kerokero.korokoro.jp :0
-viaオプションによりssh経由でのVNC接続が行われる。まずsshのパスワードを尋ね、その後VNCのパスワードを尋ねてくるので、これは結構安全なのではなかろうか。

au携帯からPCをコントロール、面白いけど実用性は...???

  VNCサーバーには携帯電話からもアクセスすることができる。そもそも私がVNCに興味を持ったのは、携帯から操作したかったからなのだが。auの場合、そのためのビューアーにμVNCがある(HitachiSystems、http://micro-vnc.jp/pc/)。これはBREWアプリだが、ダウンロード料金は1000円で(2006年6月頃)、一般のゲームアプリなどよりはかなり高い。しかし、sshにも対応しているし、なかなかよくできたアプリである。このアプリの取扱説明書は、ホームページから入手できる。μVNCからVNCサーバーに接続すると、携帯の小さな画面にデスクトップが表示され、マウスカーソルも移動できる。これはかなり感動ものだ。携帯側でマウスカーソルを動かすと、サーバー側のデスクトップでもマウスカーソルが移動する。携帯の画面はとっても小さいが、表示の拡大機能があるので、見る分には使える。
ところが、文字の入力となると一苦労。まず携帯から送れるのはアルファベットのみのようだ。これはVNCサーバーの問題かもしれない。Emacsを立ち上げて日本語入力を試みところ、ひらがなの入力まではできたが、変換のためのスペースの送信方法がわからず断念。

結論として

  結論として、携帯からデスクトップを見ることはできるが、文字入力などは、この組合せでは無理。マウスクリックだけで使えるようなソフト(ブラウザなど)には使えるが、実用性はちょっと...というところ。以上は、Linuxマシンをサーバーとしたときの話だが、Windowsならば状況が変わるかもしれない。しかし、携帯から自分のマシンのデスクトップにアクセスしなければならないというような状況がそれほどあるとは思えない。μVNCには1000円の出費だったけど、まあそれなりの感動はあったかな。

| | コメント (0) | トラックバック (0)

« 2006年9月3日 - 2006年9月9日 | トップページ | 2006年10月8日 - 2006年10月14日 »