AWSのパブリックサブネットに踏み台サーバーを構築し、プライベートサブネットのサーバーへSSHする③（踏み台経由のSSH接続）

前回はパブリックサブネットに踏み台用のEC2(Linuxサーバー)を構築する手順を確認しました。
今回はプライベートサブネットにさらにもう一台EC2（Linuxサーバー）を構築し、踏み台経由でSSH接続する手順を確認します。
# 「AWSのパブリックサブネットに踏み台サーバーを構築し、プライベートサブネットのサーバーへSSHする」の手順記事まとめ
①[VPC・サブネット作成](https://qiita.com/tonkatsu_oishi/items/ee5d7f64a43ba7deb671)
②[踏み台Linuxサーバー構築](https://qiita.com/tonkatsu_oishi/items/aabddfa6b54f1a29d4af)
③[踏み台経由のSSH接続](https://qiita.com/tonkatsu_oishi/items/9ffdd560624f25dc7fa9)←今ここ
④[Windowsnの踏み台サーバー作成](https://qiita.com/tonkatsu_oishi/items/80d86fa0145e37896147)
⑤[プライベートサブネット上のLinuxサーバーをWEBサーバー化しWindowサーバーから接続確認をする](https://qiita.com/tonkatsu_oishi/items/27bec9679b247a035757)
※関連記事
[Route53でPrivateHostedZoneを作成しVPC内の名前解決を行う](https://qiita.com/tonkatsu_oishi/items/26f121d25db5c9fb7163)

# 構成確認
今回はプライベートに一台サーバーを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/017717e8-646f-b045-4526-3f2ba86626a2.png)

プライベートサブネットに構築したサーバーへの接続フローは下記図のようになります。
まずはインターネット経由で踏み台サーバーへ接続します。踏み台サーバーからさらにSSH接続することで、プライベートサブネットのサーバーへ接続できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/e2b89592-4ee8-1319-f9cd-9b852ddf80fc.png)

前々回の記事で、パブリックサブネットにNATGatewayを構築しました。プライベートサブネットのデフォルトゲートウェイ（0.0.0.0/0）はNATGatewayに向けられています。そのため、プライベートサブネットに構築しているEC2インスタンスからインターネットへのアウトバウンド接続を行う際はNATGateway経由の通信経路となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/98351252-6382-f48b-64a3-48e18ab920cb.png)


# プライベートサブネットにEC2インスタンスを構築する
詳細な手順は前回の記事にてご紹介したため割愛します。
このEC2は今後Apacheをインストールするため、今回は名前を「HTTPS_DEMO_WEB」としました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/f1262b34-c6de-6ecd-8292-98bbd5a23800.png)

AMIは踏み台サーバーと同様に「AmazonLinux2023」を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/047d6f39-ac3a-cae6-ac37-2150db50dcbf.png)

インスタンスタイプも踏み台サーバーと同様に「t2.micro」を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/be1f2e47-2246-7b59-6fc8-8f0956deb508.png)

キーペアは前回作成したものを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/169298b2-e4c6-a4cb-8203-27b51b67735b.png)

VPCは前々回に作成した「HTTPS_DEMO_VPC」を指定します。
サブネットにはプライベートサブネット（HTTPS_DEMO_SUB_PRV1a）を指定します。
「パブリックIPの自動割り当て」は無効化とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/9365d3b3-6017-5b78-4c70-f988f9a4c8ce.png)

サーバーごとにセキュリティグループを分けたいため、セキュリティグループは新規作成します。
セキュリティグループ名・説明を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/5681429e-40e0-35ca-b51a-8456eb3e4b55.png)
セキュリティグループルールを設定します。
「タイプ」には「SSH」を選択します。今回は踏み台サーバーからの接続のみ許可したいため、「ソースタイプ」には「カスタム」を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/56171d88-f4ce-e3e5-0869-6d6135b68cbe.png)
セキュリティグループの許可ルールのソースには、セキュリティグループを指定することもできます。今回は踏み台サーバーのセキュリティグループをソースとして指定します。
「ソース」のテキストボックスを押下するとプルダウンメニューが表示されます。プルダウンメニューの中から、踏み台サーバーに設定しているセキュリティグループ（HTTPS_DEMO_SG）を設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/1e049b6e-a87e-454d-13e7-7863558b3737.png)

「高度なネットワーク設定」を展開します。
今回はプライベートサブネット（10.0.1.0/24）内にサーバーを構築します。
そのため、プライベートIPには「10.0.1.4」を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/d401d0e3-5036-0f4a-6adc-07069014aebe.png)

ストレージは「8GB」とし、「gp3」を指定します。
高度な詳細は変更せず、「インスタンスを起動」を押下し、ステータスチェックが完了するまで待機します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/9f340808-f427-b529-e5c7-6cd8949c9e78.png)

# SCPで秘密鍵を送信する

プライベートサブネットに構築したEC2には、踏み台サーバー上からSSHにて接続します。
SSHに使用する秘密鍵は、踏み台サーバー構築時に作成したキーペアとなります。
プライベートサブネットのEC2にSSH接続するために、まずは踏み台サーバー上にキーペアを配置する必要があります。

SCPコマンドを使用すると、インターネットを通じてリモートのサーバーにファイルを転送することができます。今回はローカルの環境から踏み台サーバーあてにキーペアをSCPで転送します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/a079d6bf-5a48-7fb5-7104-d7387f07ecf9.png)

エクスプローラーを開き、キーペアを保存しているフォルダまで移動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/fb6354b2-0544-f76b-26d8-43a4647b8520.png)

エクスプローラー上部のフォルダパスの部分にカーソルを合わせ、「cmd」と入力しエンターキーを押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/c2186533-5c70-ed96-e1e5-34d8b5662131.png)

キーペアを保存しているフォルダパスでコマンドプロンプトを起動することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/059425b5-b666-46fd-6b33-419d3837a9af.png)

scpコマンドの構文は下記のようになります。

~~~
scp -i 接続に利用する秘密鍵 送信したいファイル名 ユーザー名@接続先サーバーのIP:送信先のディレクトリパス
~~~

今回はEC2作成時に使用したキーペア（HTTPS_DEMO_KEY01.pem)を使用して踏み台サーバーに接続し、キーペア（HTTPS_DEMO_KEY01.pem)を送信したいです。送信先のディレクトリは「ec2-user」のホームディレクトリとします。
その為、コマンドプロンプトには下記のようにコマンドを入力し実行しました。
~~~
scp -i HTTPS_DEMO_KEY01.pem HTTPS_DEMO_KEY01.pem ec2-user@踏み台サーバーのグローバルIP:/home/ec2-user
~~~

コマンドが成功すると、コマンドプロンプトにファイルサイズやファイル転送にかかった時間などが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/388f8bf2-bef4-5578-4932-682dccf40340.png)

踏み台サーバーにSSH接続し、キーペアが転送されているか確認してみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/44ef52f9-4e16-21a5-0b82-ff338890ba0e.png)

ec2-userのホームディレクトリにて下記コマンドを実行します。

~~~
ls -la
~~~
先ほどSCPで転送したキーペア（HTTPS_DEMO_KEY01.pem）がホームディレクトリに存在することが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/056b638a-5861-14aa-bca5-342721308f1e.png)

現在、秘密鍵の権限は「664（所有者・usersグループ所属者が実行可能、その他第三者は読み取りのみ可能）」となっています。
この状態のまま秘密鍵を使用してSSH接続を行おうとすると、「Permissions 0644 for ‘xxx.key’ are too open.」というようなエラーが発生して接続が行えません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/f1eda6d3-6d80-407a-d9d4-5db192b08c04.png)

その為、chmodコマンドでキーペアファイルの権限を「644」から「600（所有者のみ実行可能、その他ユーザーは権限無し）」に変更します。
chmodコマンドの構文は下記のようになります。

~~~
sudo chmod 600 ファイル名
~~~

今回はキーペアファイル（HTTPS_DEMO_KEY01.pem)の権限を変更するため、下記のようにコマンドを実行しました。

~~~
sudo chmod 600 HTTPS_DEMO_KEY01.pem
~~~

秘密鍵の権限を変更したら、プライベートサブネットのサーバーへSSH接続してみます。
SSHコマンドの構文は下記のようになります。

~~~
ssh -i 秘密鍵ファイル名 ユーザー名@接続先サーバーのIP
~~~

今回は「HTTPS_DEMO_KEY01.pem」という秘密鍵ファイルを使用して「ec2-user」でプライベートサブネットのサーバー「10.0.1.4」へと接続したいため、実行コマンドは下記のようになります。

~~~
ssh -i HTTPS_DEMO_KEY01.pem ec2-user@10.0.1.4
~~~

コマンドを実行し、踏み台サーバー経由でプライベートサブネットのサーバーへ接続できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/c5961df3-026e-9e3f-ec50-6c78753172b0.png)

ここまでお読みいただきありがとうございました。
[次回](https://qiita.com/tonkatsu_oishi/items/80d86fa0145e37896147)はパブリックサブネットにWindowの踏み台サーバーを構築してみようと思います。