自宅サーバにSSHしてトネリングして、スリープ状態のWindows PCをwakeonlan起こしてリモートデスクトップ接続する

意外と簡単に外からでも自宅のWindowsデスクトップが利用できることがわかった。

登場するマシンは以下の通り。

  • お外
  • 自宅のLAN

アクセス先windwosは7アルティメイト。手順は以下の通り。

  1. 自宅サーバSSHする
  2. 自宅サーバからスリープ状態のWindows PCをwakeonlanで起こす
  3. 自宅サーバでトネリングしてWindows PCに3389番ポートを通す
  4. Windows PCをリモートデスクトップで接続して利用する

準備

自分のWindows PCのマザーボードは、GIGABYTE製のG31M-ES2Lで、BIOSでディフォルトでwakeonlanが受け付けられるようになっていた。ただし、wakeonlanはスリープ状態のPCを起動することしかできない。よって、Windwos 7は使わないときはシャットダウンするのではなく、スリープ状態にしておくという運用をしなければならなかった。

あと、このWindows PCのEthernetのMACアドレスを控えておく必要がある。さらに、Winodws PCのIPは当然ながら固定させておく必要がある。

最後にリモートデスクトップ接続を許可するのを忘れずに(Windows 7はディフォルトで許可していたような気がする)

自宅サーバSSHで接続する

まぁ接続しちゃってください。puttyでやりました。

自宅サーバからスリープ状態のWIndows PCをwakeonlanで起こす

Perlでかかれたwakeonlanスクリプトを利用した。

これを、Windows PCのEthernetのMACアドレスを使って、

$./wakeonlan XX:XX:XX:XX:XX:XX

と実行する。すると、スリープ状態のWindows PCが起動する。

自宅サーバでトネリングしてWindows PCに3389番ポートを通す

SSHでの接続でputtyを使うと、簡単にできる。

puttyの設定を開き、「接続->SSH->トンネル」にて、

  • 現ポート 7777(好きなポート番号)
  • 送り先 Windows PCのIPアドレス:3389(例 192.168.0.10:3389)

という設定を追加する。こうすることで、puttyを開いているPCのポート7777番は自動的にWindows PCの3389番につながるようになる。

Windows PCをリモートデスクトップで接続して利用する

Windows 7の場合、「アクセサリ->リモートデスクトップ接続」を開き、接続先を「127.0.0.1:7777」にする。これで接続できる。

以上、結構パフォーマンスよいよ

リモートデスクトップ接続自体でも暗号化しているっぽいのに、さらにSSHで暗号化したら重そうな気がしますが、ADSLな自宅に接続しても使えないことはないレベルに使うことができた。

リモートデスクトップ接続をトネリングするのに参考にしたサイト(記事最上部に書いてある)だと、SSH接続先の自宅サー亜bでもトネリングしていたが、うちの場合は、puttyでトネリングするように指示するだけでできていたんだがどうなのだろう。