インターネットを介したリモートデスクトップ(RDPやVNC)は便利ですが、普通にやろうとすると遠隔操作対象PC側にグローバルIP(固定IPでないときはさらにDDNSも)が必要で、ルータやファイアフォールの設定をいじって内向きにポートに穴をあける必要があります。
別にそのくらいやればいいじゃんと思いますが、いくつか問題があります。
・グローバルIPかつポートが開いているということは、サイバー攻撃の対象にされてもおかしくない
・暗号化されていない遠隔操作プロトコルを使うと、途中で盗聴されてしまう可能性がある
・ルータやファイアフォールの設定権限を持っていない場合、そもそもポートに穴を開けることができない
ここではこれらの課題を解決するために、中継サーバを使用して2本のSSHトンネルを張って、その中をRDPやVNCを通して遠隔操作する方法を試してみます。
・固定グローバルIPがなくDDNSを使用していなかったり、携帯電話回線などグローバルIPを持っていない回線につながっているPCの遠隔操作が可能
・普通にWebブラウジングができる環境(HTTP(S)が使える環境)であれば、追加のポートを開けることなく遠隔操作が可能
・途中のすべての経路を暗号化し、安全に遠隔操作が可能
具体的にはこんな感じを目指します。
中継サーバはVPSでもなんでも良いですが、必要な時に必要なだけサーバを動かせるクラウド(AWS)を使ってみます。遠隔操作しない時はサーバを止めてしまえばお金もかかりませんし 笑
1. AWSに中継サーバーを立てよう
早速ですが、AWSに中継サーバーを立てていきましょう。
-1. AWSのアカウントを作成
まずはAWSにアカウントを作成しましょう。しばらくは無料で使えます。すでにアカウントをお持ちの方は次の項目へお進みください。
-2. AWS EC2のインスタンス(仮想サーバ)を作成する










※TCP:80番を解放したのは、実はHTTP通信を通すわけではありません。初期状態はTCP:22番がSSHポートですが、後でSSHポートをTCP:80番に変更します。この理由ですが、詳しくはその2で説明します。


※ダウンロードしたaws-key.pem(名前はなんでも良いです)は、その2で中継サーバにSSHログインするために必要ですので紛失しないようにご注意ください。

これで、AWS EC2上に仮想の中継サーバが立ち上がりました!
-3. Elastic IPを使用してEC2のインスタンスに固定IPを割り当てる
ちょっと疲れてきましたがもう一息です!
標準ではサーバを起動し直すたびにIPアドレスが変わって不便なので、作成されたインスタンス(仮想サーバ)に固定IPを割り当てておきましょう。Elastic IPをいうサービスを使いますが、IPアドレスだけとって放置するなど、ちゃんとインスタンスに割り当てておかないとお金がかかるので注意が必要です(インスタンスを消したらIPも消しましょう)。




これで、先ほど作成したインスタンスに固定IPが割り当てされました。
-4. 中継サーバ完成!
その2へ続きます。