VNC on SSH with PortForwarder

研究室の Windows を自宅の Windows から操る方法
2003/1/24 初版
2004/10/03 修正

検索エンジンから飛んできた人へ

このサイトには似たようなドキュメントが2つあります。

VNC on SSH with
PortForwarder
VNC on SSH with
TTSSH
VNC Server
(研究室側)の OS
Windows Linux
VNC Viewer
(自宅側)の OS
Windows Windows
SSH クライアント
(ポート転送用)
PortForwarder Tera Term Pro
+ TTSSH
説明の難易度 ★★
(ライトユーザー向け)
★★★
(中級者向け)

方針

リモート操作ソフト VNC を使って、研究室のパソコンを自宅からインターネット経由で操作します。

研究室のパソコンはファイヤーウォールの内側にあり、安全のためインターネット側からは直接通信できないようになっています。そこで SSH の Port Forwarding 機能を使って暗号化された安全な通信路を作り、そのトンネルを通して研究室と自宅を接続します。要するにこのページに書いてある通りのことをします。


(図:そのページから無断引用)

この図で言うと Alice が自宅のパソコン、 Bob がファイヤーウォールであるサーバー、 Charlie が研究室のパソコンにあたります。

以下、とりあえず使えるようになるまでの手順をざっと流します。詳しい解説が欲しくなったら参考文献を漁ってください。

用意するもの

VNC
研究室側と自宅側の両方で使います。「Installable packages:」の「Windows 9x/2000/NT/XP (x86)」にチェックを入れ、次のページから「x86 Win32 full installation」をダウンロードします。
PortForwarder
自宅側で使います。ダウンロードのページから Windows (95/98/NT/2000) 用の実行ファイルをダウンロードします。

研究室側の準備

VNC Server のインストール

公式ドキュメントは http://www.realvnc.com/winvnc.html です。以下、簡単に手順を追っていきます。

ダウンロードした VNC のインストーラ(vnc-3.3.6-x86_win32.exe とか)を実行します。

[Full installation] を選び、 [VNC Server] にチェックが入っていることを確認します。

[Register VNC Server as a system service] にチェックを入れます。こうするとログオフした後でも遠隔操作が可能になります。すぐ使うなら [Start the VNC Server system service] にもチェックを入れておきましょう。

ここで VNC Server の設定を行います。この設定はインストール後に [スタートメニュー - プログラム - RealVNC - VNC Server - Show Default Properties] で変更できます。

研究室側の準備は以上です。

自宅側の準備

VNC Viewer のインストール

研究室のパソコンと同じ手順でインストールします。こちらは VNC Viewer だけ入れればいいでしょう。(VNC Server も入れれば家のパソコンを他から遠隔操作できるようになります)

PortForwarder のインストール

公式ドキュメントは http://www.fuji-climb.org/pf/JP/howtouse_jp.html です。以下、簡単に手順を追っていきます。

ダウンロードした PortForwarder のアーカイブ(PortForwarder-1-1-1_WIN.zip とか)を適当なインストール先フォルダに解凍します。

次に config ファイルを作ります。とりあえず↓をコピーしてメモ帳にでも貼り付けましょう。

Host bob
	HostName bob.ctrl.titech.ac.jp
	User UserName
	LocalForward 5900 Charlie:5900

そしたら

その他、詳しい設定の意味などは公式ドキュメントを参照してください。終わったら適当なファイル名(config.txt とか)で保存します。

*1
マシン名で指定できない場合は(研究室内にネームサーバーがない場合など)、マシン名の代わりに IP アドレスを書きます。

暗号鍵の生成

次に、(とりあえずは使いませんが)自分の暗号鍵も作っておきましょう。 PF-keygen.exe を実行します。

パスフレーズは必須ではありません。パスワードとは別物です。カラッポにしておくと後で楽できます。

自宅側の準備は以上です。

使い方

0. VNC Server を立ち上げておく

当たり前ですが、研究室のパソコンは電源を入れっぱなしにしておかないといけません。 VNC Server がサービスとして登録されていれば、ログオンしていなくても VNC Server は生きています。

以下、自宅のパソコンでの接続手順を説明します。

1. PortForwarder を常駐させる

はじめに PortForwarder.exe を実行します。デスクトップにショートカットを作ったりは好きにしてください。

[Config file:] の [...] ボタンを押し、さっき作った config ファイルを開きます。

config ファイルの頭に書いた識別名を [Host:] に入力し、 [Connect] を押して接続します。

初回は警告が出ます。 [はい(Y)] を押します。

パスワードを入力します。(パスフレーズではありません。 VNC Server のパスワードでもありません)

接続されました。 [Hide] を押すとウィンドウがタスクトレイに隠れます。

この段階で、研究室のパソコンと自宅のパソコンとの間に暗号化された通信路が確立しました。この通信路を通して VNC Viewer を VNC Server に接続します。

2. VNC Viewer を起動する

PortForwarder が常駐している状態で、 [スタートメニュー - プログラム - RealVNC - Run VNC Viewer] を実行します。

[VNC server:] に 「localhost:5900」 と入力します。数字はさっき config ファイルに書いたローカルのポート番号に合わせます。 Windows 95/98/Me の場合は「localhost:」の代わりに「127.0.0.1:」と書くらしいです。

パスワードを入力します。 VNC Server のパスワードです。ここでパスワード入力画面が出てこないときは VNC Server との通信が確立できていません。手順を見直してください。

うまくいけばこんな感じになります♪(これは VNC Viewer のウィンドウを縮小表示した様子です) タスクバーのボタンを右クリック、またはウィンドウ左上のアイコンをクリックするとメニューが出て、いろいろ設定できます。*2

VNC の中でさらに VNC を使ってみるテスト(笑)

*2
[Connection options...] で [Scale by] を使うと縮小表示できます。私はいつも 3/4 や 1/2 で使っているのですが、さっき試しに 3/5 に設定してみたら、落ちました。 Windows XP がブルースクリーンで。どうやら「(experimental)」と書いてあるのは伊達じゃないようです。この機能を試すのは書きかけの卒論をきちんと保存してからにしましょう。

仕事が終わったら

  1. VNC Viewer を終了します。
  2. PortForwarder を終了します。タスクトレイのアイコンをクリックして [Exit] を選びます。

研究室のパソコンで VNC Server のサービス登録を解除するには、 [スタートメニュー - プログラム - VNC Server - Unregister VNC Server Service] を実行します。再び登録するのは [Register VNC Server Service] です。

手間を省くには

VNC Viewer の設定を保存する

VNC Viewer のメニューから [Save connection info as...] を選ぶと、そのときの設定内容をファイルに保存することができます。保存したファイルを VNC Viewer のアイコンにドラッグ&ドロップするか、またはショートカットのプロパティで [リンク先(T):] の後に「/config "設定ファイルのパス"」を書けば、保存した設定で自動的に接続できます。

PortForwarder のウィンドウを自動的に隠す

PortForwarder のウィンドウで [Automatically] にチェックを入れると、接続が成功したとき自動的にウィンドウがタスクバーに隠れます。

接続時のパスワードを省略する

PF-keygen.exe で作った暗号鍵を使うと、 PortForwarder で接続時のパスワードが不要になります。

  1. PF-keygen.exe で作られた2つの暗号鍵ファイルのうち、公開鍵である identity.pub を研究室に持っていきます。*3
  2. SSH サーバー(ファイヤウォール、最初の図で言うと Bob)のホームディレクトリに .ssh という名前のフォルダを作ります。先頭のピリオドを忘れずに。
  3. .ssh フォルダに identity.pub をコピーします。
  4. identity.pub のファイル名を authorized_keys に変更します。

これで次回の接続からパスワードを求められなくなるはずです。もし authorized_keys ファイルがすでにあったら、メモ帳か何かで開いて identity.pub の内容を追加します。

*3
もう1つは identity という名前の秘密鍵です。こちらは誰にも見せちゃいけません。

参考文献

扉ページにまとめてあります。