SSHポート転送でリモートデスクトップ接続(多重転送あり)


SSHポートフォワーディングを使えば、ファイアーウォールの内側にあるようなマシンに接続できたりします
ポートフォワーディングを使った例として、ここではWindowsPCにリモートデスクトップ接続してみます



単純な接続

SSHサーバに接続し、そこを経由してWindowsサーバにリモートデスクトップ接続する例です
図で説明すると以下のようになります
network1

MacOSXからのリモートデスクトップ接続

接続元となるPCがMacOSXの場合、ターミナルから以下を実行します

$ ssh -A -t -L 3389:Windowsサーバ:3389 foo@外部SSHサーバ

この状態で、リモートデスクトップクライアントアプリから、localhost(127.0.0.1)に対して接続を行います
以下の様に、「PC Name」に「127.0.0.1」を指定します
Microsoft Remote Desktop

これで、Windowsサーバにリモートデスクトップ接続できます

※接続成功の画面
Microsoft Remote Desktop

Windowsからのリモートデスクトップ接続の場合

接続元となるPCがWindowsPCの場合、SSHクライアントソフト(Putty)から以下のような設定の上でSSHサーバに接続します
源ポートに「3389」を指定し、送り先にリモートデスクトップ接続するWindowsサーバとポートをコロン(:)で挟んで「Windowsサーバ:3389」の様に指定します
putty_screen01

この状態で、リモートデスクトップクライアントからlocalhost(127.0.0.1)に接続します
Microsoft Remote Desktop

これで、Windowsサーバにリモートデスクトップ接続できます

SSHサーバを複数経由した、多重ポート転送による接続

SSHサーバを2台介してリモートデスクトップ接続する場合の例です
図で説明すると以下のようになります
network1

MacOSXからのリモートデスクトップ接続

接続元となるPCがMacOSXの場合、ターミナルから以下を実行します

ssh -A -t -L 3389:127.0.0.1:3389 foo@外部SSHサーバ ssh -A -t -L 3389:Windowsサーバ:3389 foo@内部SSHサーバ

この状態で、リモートデスクトップクライアントアプリから、localhost(127.0.0.1)に対して接続を行います
接続の指定は単純な接続の場合と同様に、「PC Name」に「127.0.0.1」を指定します
Microsoft Remote Desktop

これで、Windowsサーバにリモートデスクトップ接続できます

Windowsからのリモートデスクトップ接続の場合

接続元となるPCがWindowsPCの場合、SSHクライアントソフト(Putty)から以下のような設定の上でSSHサーバに接続します
源ポートに「3389」を指定し、送り先にlocalhost(127.0.0.1)とポートをコロン(:)で挟んで「127.0.0.1:3389」の様に指定します
putty_screen01

接続後、Puttyのターミナルから、内部SSHサーバにSSH接続します。

ssh -A -t -L 3389:Windowsサーバ:3389 foo@内部SSHサーバ

これでポート転送の多段ができましたので、この状態でリモートデスクトップクライアントからlocalhost(127.0.0.1)に接続します
Microsoft Remote Desktop

これで、Windowsサーバにリモートデスクトップ接続できます