Table of Contents
VNCで共用NTマシンにアクセス
あなたの回りには、共用のWindowsマシンとかはありませんか?
最近ではWindowsだらけ、というところも多いのかも知れませんが、 私の回りでは、PC-UNIXが主力になっています。しかし、 それでも、 WordのドキュメントやExcelのデータを渡されることがありまして、 そのような時のためにオフィススーツを入れた 共用のNTマシンがあります。
VNCを使い始めた頃、これがあれば、普段使っている環境から 共用マシンのところまで移動しないで使えるようになるのでは、 と考えました(1)。しかし、 VNCのデフォルトの設定では以下のような問題がありまして、 そのままではあまり役に立ちません。
- デフォルトの設定では、アクセスするのにパスワードが必要ですが、 共有するために皆が同じパスワードを使うのは嫌な気がします。
- デフォルトの設定では、後からのコネクションが有効になり、 先にコネクトしていたセッションがクローズされてしまいます。 コネクションの切断はパスワード認証後なのですが、 パスワードを共有していると、他の人に横取りされることになります。
- デフォルトの設定では、リモートのキー、マウスも ローカルの(共有マシン固有の)キー、マウスも 同時に使えるようになっています。 共有マシンが離れたところにあるような場合、 そこに通りかかった人にいじられるのもいやです。
- また共有マシンにVNC経由でログインし、 ログオフしないでコネクションを切断した場合、 ログインしたままの状態になっています。 このような状態では、やはり、 他の人に勝手にいじられることになりますので、宜しくありません。
- それに共有マシンだからといって、ネットワーク上の誰から でもアクセスできてしまう、というのも具合が悪いでしょう。 やはりある程度のアクセス制限は欲しいものです。
ところが、WinVNCのAdvanced Setting をうまく設定すると、これらの問題が解決されて、 VNCによってリモートのWindows NTを共用することができるようになります。
こんな設定ができます
Advanced Setting (レジストリを編集します)によって、 以下のように設定することができます。
-
AuthRequiredを0にすると、 パスワード無しの設定ができるようになります。 こうしておいて、 デフォルトのユーザ設定でパスワードを無しにすると、 誰でも共用マシンにアクセスできるようになります。
しかし、このままではログオンした後でも誰でもパスワード無しでの アクセスができることになりますので、非常に危険です。 そこで、ログオンしてから普通にPropertiesダイアログを 開いて、ユーザ毎のパスワードを設定すれば、 ログオンした状態では、それぞれのユーザ毎のパスワードで ガードされるようになります。
-
後からの接続を優先するか、先の接続を優先するかは ConnectPriorityで指示することができます。 共用マシンでは、先の接続を優先させるべきでしょう。 ConnectPriorityを2にすると、 先の接続が優先されて、 後からのコネクションは拒否されるようになります。
ただし、これはビューワからの非共有アクセスの場合で、 共有アクセス(-shared)の場合には(パスワードを要求されますが) 同時に接続されて画面が共有されます。
-
Propertiesダイアログで、 リモート、ローカルの入力を無効にすることができます。 共有マシンのキーボード、マウスで作業するなら、 リモートを無効にしておけば、 ネットワーク経由でいじられることがありません。 また、リモートにVNC経由で使用するなら、 ローカルを無効にして、通りかかりの人からは いじられないようにすることができます。
但し、ダイアログでリモート無効と設定しても、 それは、以降の接続について、です。 すでに存在しているコネクションについては 適用されませんのでご注意ください。
また、ローカル無効はすでにログオンしている 場合には効かないようです。 デフォルトのユーザ設定でローカル無効としておくと、 リモートのビューワが接続している間、 ローカル側のキー、マウスが無効になります。
-
LockSettingによって、 コネクションが切れた場合のデスクトップのアクションを 指定することができます。 これを2にしておくと、 コネクションが切れた場合に、 自動的にログオフされるようになります。 専らリモートでアクセスする場合には便利な機能です。
ですが、このように設定しておくと、 コネクションが切れた時にはいつでもログオフされてしまいます。 ローカルオペレーションとリモートアクセスの 両方を使っている場合には、あまり適切ではありません。
この設定は、どうもデフォルトのユーザ設定では 効かないようで、ユーザ毎に設定する必要があるようです。
-
AuthHostsを使うと、 WinVNCサーバにアクセスできるホストを制限することができます。 これはREG_SZの文字列で
-:+ipaddr1:+ipaddr2
といった形式で指示します。上のケースでは、 ipaddr1、ipaddr2のホストしか アクセスできないようになります。 一応、各項はIPアドレスのマッチパターンを ドット表記したものなのですが、 サブネットレベルでの制限ならともかく、 同一サブネット内の特定マシンだけに制限したい場合には、 全部リストアップすることになります。
実際の設定(私の場合)
私の場合には以下のように設定してみました。
ローカルマシン固有の設定
HKEY_LOCAL_MACHINE\Software\ORL\WinVNC3\のレジストリを 以下のように設定しました。
AuthRequired | REG_DWORD | 0: パスワード無しでもアクセスできるようになります。 |
ConnectPriority | REG_DWORD | 2: すでにビューワが接続している場合には、 新しい非共有接続は拒否されます。 |
AuthHost | REG_SZ |
-:+ホスト1:ホスト2:... アクセスするホストをリストアップしておきます。 これら以外のホストからの接続は拒否されます。 |
デフォルトユーザ設定
HKEY_LOCAL_MACHINE\Software\ORL\WinVNC3\Defaultの レジストリに以下の項目を追加しました。
LockSetting | REG_DWORD | 2: コネクションが切れた場合に、自動的にログオフします。 実際には、ユーザの個別設定でオーバーライドします。 |
また、スタートメニューから「Show Default Setting」で 「Default Local System Properties」 ダイアログをオープンして、以下の項目を変更します。
Password | 空白 | これで、ログオンダイアログが表示されている状態では パスワード無しで接続できるようになります。 |
Disable Local Keyboard & Pointer | チェック | これで、リモートアクセス中は、 ローカルキーボード、マウスが無効になります。 |
ユーザ個別の設定
HKEY_LOCAL_MACHINE\Software\ORL\WinVNC3\<username> のレジストリに必要に応じて以下の項目を追加します。
LockSetting | REG_DWORD | コネクションが切れた場合のアクションを指示します。 近くにあって、 リモート、ローカルを切り換えながら使うような場合には 1(何もしない)が、 専らリモートアクセスするような場合には 2(コネクションが切れた場合に、自動的にログオフ)が 便利でしょう。 |
また、スタートメニューから「Show User Setting」で 「Current User Properties」 ダイアログをオープンして、以下の項目を変更します。
Password | 設定 | ログイン中は、ここで指定したパスワードで保護されます。 必ず指定しておきましょう。 |
結果は...
以上のように設定した場合、 WinVNCは以下のように動作するようになります。
- ログオンダイアログが出ている状態
- 誰でもパスワード無しでアクセスできます。 複数のコネクションが要求された場合には、 (非共有コネクションであれば) 最初のコネクションが優先され、 以降のコネクションは拒否されます。
- また、誰かがコネクションしている状態では ローカルキーボード、マウスが無効になっていますので、 他の人に勝手に割り込まれることもありません。 ですが、コネクションしたまま忘れると 悲惨なことになりますのでご注意の程を。
- ログオンしている状態
- ユーザ毎に設定されたパスワードで保護されています。 ビューワからの非共有コネクションは、パスワード入力後に拒否されます。 共有コネクションの場合には、画面が表示されます。
- この場合にも、コネクション中は ローカルキーボード、マウスが無効になっていますので、 他の人に勝手に割り込まれることはありません。 ただし、ローカルマシンに画面が表示されるのは 防ぐことができません(まあモニタを外せば別ですが)ので、 その点は諦めてください。
- コネクションがクローズされた時
- ユーザ毎のレジストリでLockSettingを2にしておいた場合には、 ビューワを終了させると、 リモートサーバ側で自動的にログオフされます。 これで、勝手に操作されることもありません。
基本的に、非共有セッションでコネクトするようにすれば、 このような設定で、 気持よく共有のNTマシンを遠隔アクセスすることができるでしょう。
補遺
-
今ではWindows ServerやXP-Pro、Vista-Businessクラスの Windowsにはリモートデスクトップ機能が標準で搭載されていますので、 このような小細工無しでリモート共有が可能になっています。 今となってはこのような小細工はもう不要でしょう。