MacからSSHポートフォーワード経由でWindows Serverへリモートデスクトップ

Pocket

SSHポートフォーワーディング概要図

MacからコマンドラインのSSHで外部サーバを経由してWindows Serverへリモートデスクトップする方法を説明する。

想定しているのは次のようなケース。(経由サーバはSSHができればLinuxでなくてもよい。)

  • Windows Serverがリモートデスクトップ接続を許可しているのは固定IPのみ
  • 自分のMac使用環境は動的IPで直接Windows Serverへ接続できない
  • 外部にあるLinuxサーバのIPを接続許可してSSH経由でリモートデスクトップ接続したい

環境条件

SSHポートフォーワーディング概要図

  • Windowsサーバのホスト名: win.example.com
  • 経由(Linux)サーバのホスト名: linux.example.com

として説明する。

Mac用リモートデスクトップクライアント

MacのMicrosoft Officeにはリモートデスクトップへ接続するためのアプリ”Remote Desktop Connection”が入っているので、それを使用する。

経由サーバへSSHポートフォーワードする

普段外部のLinuxサーバへ次のようなSSHコマンドで接続しているとする。

ssh user@linux.example.com

このコマンドにLオプションをつけるとポートフォーワードができる。
リモートデスクトップが使用するポートは3389番なのでローカル側、リモート側のポートをどちらも3389を指定する。

ssh -L 3389:win.example.com:3389 user@linux.example.com

細かく説明すると。

ssh -L (ローカル接続ポート):(リモートサーバ):(リモート接続ポート)
 (ユーザ名)@(経由サーバ)

ホスト名のところはもちろんIPアドレスでもよい。

Macのローカルでリモートデスクトップのポートが開いているはずがないのでローカル接続ポートは3389としている。

余談: 複数のポートフォーワードセッションを使う場合など、好きなローカルポートで試しても大丈夫だが接続先は”localhost:13389″などとしてポート指定をする必要がある。

実行するといつも通りLinuxサーバへログインする感じになる。
ただ、普通にログインしたときと違ってMac側の3389番ポートが開いていることがnetstatで分かる。

[imac ~]$ netstat -an |grep 3389
tcp4       0      0  127.0.0.1.3389         *.*                    LISTEN     
tcp6       0      0  ::1.3389               *.*                    LISTEN 

リモートデスクトップへ接続する

Linuxサーバをログアウトするとポートフォーワードも終了してしまうので、ログインした状態のままMicrosoft Officeに同梱されている”Remote Desktop Connection”を立ち上げる。

ローカルホストのポート3389がリモートのWindows Serverのポート3389がつながっているので、ここではlocalhostに対して接続する。

リモートデスクトップへ接続

次に証明書がどうとか警告がでるけど気にしないで接続ボタンを押すことにする。

Windows Serverのログイン情報を入力してOKボタンを押す。

ここで結構ハマったのは、デフォルトでドメインの項目に何か書かれたままにしていると、リモートデスクトップがハングアップして接続できない症状があったことだ。Windows Server側でドメインの設定などしていない場合にはドメインの項目が空白にしておいた方がよさそうだ。

うまくいくと、直接リモートデスクトップした場合と同じ画面が表示される。
(画像はローカルの環境で試したWindows7へのリモートデスクトップ時のもの。)

SSHポートフォーワードの終了

リモートデスクトップの接続を切り、Lオプションをつけて接続したSSHのコンソールをログアウトするとSSHポートフォーワードが終了する。

関連記事

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です