SSHでリモートデスクトップ / Remote Desktop over SSH
Windows XP Professional や Windows Server 2003 等に搭載されているリモートデスクトップ接続を SSH による ポートフォーワードによって実現させる(Remote Desktop over SSH)。
想定する環境
NAT などによりグローバルIP を有しない Windows に対するリモートデスクトップ接続
(例えば、自宅→研究室など)。
要するにトンネルを掘って、プライベート IP しか持っていないマシンに接続する。
- ただし、グローバルIP を有しているマシン (SSHサーバ) が最低1台あり、SSHサーバでは SSH Deamon が起動しているとする。 接続先Windowsマシンの TCP の 3389 番ポートも開けておく必要がある(デフォルトでは開いている)。
接続先Windowsマシンの設定
- 「マイコンピュータ」を右クリックして「プロパティ」を開く。
- 「システムのプロパティ」の「リモート」タブを開く。
- Windows XPの場合は、「このコンピュータにユーザーがリモートで接続することを許可する」のチェックマークをオンにする。(Windows VistaとWindows 7では、「リモートデスクトップを実行しているコンピューターからの接続を許可する」をオンにする)
以下、接続元のクライアントが Windows と Linux の場合について説明する。
接続元クライアントがWindows の場合
「スタート」→「プログラム」→「アクセサリ」→「通信」で「リモートデスクトップ接続」が 存在し、リモートデスクトップ接続のクライアントソフトは既にインストールされていることを 確認する。
- リモートデスクトップ接続のクライアントソフトが入っていない場合は、Windows XP Remote Desktop Connection softwareからダウンロードしてインストールしておく。
Port Forward には、Tera Term Pro + TTSSH を用いる 。
TTSSH のインストール方法などは、[Obsolete] Windows用SSHクライアント TTSSH の入手・導入方法 を参照。
メニューから Setup → SSH Forwarding → Add を選択して
Forward local port : 3389
to remote machine : Private_IP_Adress , port : 3389
とする (Private_IP_Adress は自分のものと書き換える。例:10.0.0.1)。
Setup → Save setup をやっておくと次回から設定する必要なし。
その後、TTSSH でSSHサーバに対してSSHログインを行う。
(リモートデスクトップ接続を行っている間ずっとログイン状態のままとする)。
「スタート」→「プログラム」→「アクセサリ」→「通信」→「リモートデスクトップ接続」で リモートデスクトップを立ち上げて、
コンピュータ名:localhost
ユーザ名:hoge
パスワード:******
として接続すればOK。
上記方法に従っても,Windows XP Professional → Windows XP Professional の接続の場合に, 次のようなエラーが出て接続できないことがある.
クライアントは接続できませんでした。
既にこのコンピュータのコンソールへ接続しています。
新しいコンソールセッションは確立されません。
このような場合は、以下のように対処する。
1. 以下のファイルを任意の場所(デスクトップ等)にコピー。
C:\WINDOWS\system32\mstsc.exe
C:\WINDOWS\system32\mstscax.dll
2. コピーしたmstsc.exeのプロパティを表示し、互換性タブの「互換モード」で 「Windows 98 / Windows Me」を設定。
3. 互換モードを設定したmstsc.exeを実行。
Linux の場合
rdesktop というツールを rdesktop: A Remote Desktop Protocol Client から落としてくる。
ソースしか置いてないが、普通に configure , make が通るのでインストールは簡単。
rdesktopをインストールしたら、コンソールを立ち上げ、次のように Port Forward を行う。
$ ssh -L 3389:Private_IP_Adress:3389 SSHサーバ名 -l ユーザ名
- (注) このユーザ名は SSHサーバに対するユーザ名(Windows のユーザ名ではない)。
パスワードを入力し、ログインした状態のまま、他のコンソールで、
$ rdesktop -k ja localhost
とすれば、Windows のログイン画面が出てくるので、ログインできる。
rdesktop 1.3以降、音も飛ばすことができるようになり、さらに、解像度も変更が可能となりました。
次にオプションを付けた例を上げておきます(他にもたくさんのオプションがあります)。
$ rdesktop -g 1024x768 -k ja -a 16 -r sound localhost
オプションの中身。
-g 1024x768 : 解像度の設定
-k ja : キーボードレイアウトの設定
-a 16 : 16 bit color
-r sound : 音を飛ばす
ただし,上記オプションでキーボードマッピングがおかしい場合は,「-k ja」という オプションをはずして使ってみるとよいようです.