AWS EC2 WindowsインスタンスにSSHポートフォワーディングで安全に接続する方法

2017年07月16日
EC2

AWS EC2 WindowsインスタンスにSSHポートフォワーディングで安全に接続する方法

鈴木商店の岩佐です。
仕事でAWSを使用しており、以前からローカルの開発環境をEC2に移行できないかと考えていました。
もしEC2に開発環境を構築できれば、以下のメリットがあると考えたからです。
・AMIを作成するだけで、特にバックアップを気にしなくても良い。
・高速なネットワーク回線と中程度のスペックのPCがあれば、どこでも仕事ができる。

結果は、EC2 Windowsの中で仮想マシン(VirtualBox)を起動できなかったので、残念ながら断念しました。
せっかくですので、VPCのプライベートサブネットに、EC2 Windowsインスタンスを作成して、外部からSSHポートフォワーディングで安全に接続する方法を備忘録として残しておきます。
※外部⇔SSHサーバー間は安全ですが、SSHサーバー⇔EC2 Windows間は暗号化されていませんので、ご注意下さい。

「EC2のPHPをPhpStorm+Xdebugでリモートデバッグする方法」も併せてどうぞ。

1. プライベートサブネットの作成

外部から遮断された場所にEC2 Windowsインスタンスを作成したいので、まずはプライベートサブネットを作成します。
既にプライベートサブネットを作成済みの場合は、この項を読み飛ばして下さい。

1.1. サブネットの作成

適当な名前でサブネットを作成します。今回はprivateにしました。

VPC プライベートサブネットの作成
VPC プライベートサブネットの作成

1.2. ルートテーブルの作成

適当な名前でルートテーブルを作成します。今回はprivateにしました。

VPC ルートテーブルの作成
VPC ルートテーブルの作成

作成したルートテーブルから必ずインターネットゲートウェイを削除して下さい。
当然ですが、削除しないままですと、プライベートサブネットになりません。

インターネットゲートウェイを削除
インターネットゲートウェイを削除

1.3. NATゲートウェイの作成

プライベートサブネットのEC2 Windowsからインターネットへアクセスしたいので、NATゲートウェイを作成します。
当然ですが、パブリックサブネットにNATゲートウェイを作成します。
プライベートサブネットにNATゲートウェイを作成しても、インターネットに出ていけません。
もし、EC2 Windowsからインターネットへアクセスする必要が無い場合は、NATゲートウェイの作成は不要です。

NATゲートウェイの作成
NATゲートウェイの作成

1.4. ルートテーブルの編集

「1.2.」で作成したルートテーブルに、NATゲートウェイを紐づけます。
これで、プライベートサブネットのEC2 Windowsからインターネットへアクセスできるようになります。

ルートテーブルの編集
ルートテーブルの編集

2. EC2インスタンスの作成

外部からSSHポートフォワーディングで接続するので、EC2 Windowsインスタンスの他に、踏み台となるSSHサーバーインスタンスも作成する必要があります。

2.1. SSHサーバーインスタンスの作成

まず、踏み台となるSSHサーバーインスタンスをパブリックサブネットに作成します。
※SSHサーバーに設定するセキュリティグループのインバウンド設定で、22番と3389番を開放しておいて下さい。
SSHサーバーにEIPを紐づけておくと、IPを固定できるので便利です。

SSHサーバーインスタンスの作成
SSHサーバーインスタンスの作成

2.2. Windowsインスタンスの作成

次に、Windowsインスタンスをプライベートサブネットに作成します。
リモートデスクトップ接続用のアカウント情報は、「アクション」⇒「Windowsパスワードの取得」で取得できます。

Windowsインスタンスの作成
Windowsインスタンスの作成

Windowsインスタンスに設定するセキュリティグループのインバウンド設定で、22番と3389番を、踏み台SSHサーバーのプライベートIPに対して開放して下さい。

Windowsインスタンスのセキュリティグループ
Windowsインスタンスのセキュリティグループ

3. 接続テスト

以上で、SSHポートフォワーディングでEC2 Windowsインスタンスに接続する準備が終わりました。
実際に接続してみます。

3.1. SSHポートフォワーディングを実行

適当なターミナルを使用して、以下のコマンドで踏み台SSHサーバーに接続したままにします。
接続したままにしておくことで、「クライアント⇔踏み台SSHサーバー⇔EC2 Windows」間のトンネルを掘った状態になります。
ssh -i hoge.pem (※1) -L 13389:xxx.xxx.xxx.xxx (※2):3389 ec2-user@xxx.xxx.xxx.xxx (※3)

このコマンドは、「ローカルの13389番に接続があった場合、踏み台SSHサーバーを経由して、プライベートサブネットのEC2 Windowsに転送する」という意味です。

※1. 踏み台SSHサーバーに接続するための秘密鍵
※2. EC2 WindowsインスタンスのプライベートIP
※3. 踏み台SSHサーバーのパブリックIP

3.2. リモートデスクトップ接続

リモートデスクトップクライアントを起動して接続してみます。
接続先は、localhost:13389として下さい。

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

NATゲートウェイを作成した場合、EC2 Windowsからインターネットへアクセスすることができます。

プライベートサブネットからインターネットにアクセス
プライベートサブネットからインターネットにアクセス

以上、何かのお役に立てれば幸いです。


コメントを残す

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