#はじめに
プログラミングスクールの演習で踏み台サーバー経由で公開されていないサーバーへのアクセスを可能にする環境の構築をしたのでアウトプットもかねてメモを残します。
※サブネットはAZが同じものを利用すると通信のレイテンシを抑えられますが
今回はカリキュラムの構成上異なるAZ間での構築となります。
#構築要件
構築要件は以下の通りです。
- サーバーBはインターネットに公開されていない
- サーバーA(踏み台サーバー)へのアクセスは、PCからターミナルでSSHで接続できる
- サーバーBは、サーバーA(踏み台サーバー)からのみアクセスできる
#前提
以下のように異なるAZにパブリックサブネットとプライベートサブネットを持つVPCが構築されていることを前提とします。
#①サーバーA(踏み台サーバー)からのSSHアクセスのみを許可するようにサーバーBに紐づくセキュリティグループの作成と割当て
[EC2のサイドメニュー▶︎ネットワーク & セキュリティ▶︎セキュリティグループ▶︎セキュリティグループの作成]からセキュリティグループを作成します。
次にサーバーB(EC2インスタンス)のセキュリティグループの変更をします。
[右クリック▶︎セキュリティグループ▶︎セキュリティグループを変更]から先ほど作成したセキュリティグループを割当ます。
これでサーバーA(踏み台サーバー)からのSSH接続だけを許可するセキュリティグループを割り当てることができました。
#②サーバーBの鍵をサーバーA(踏み台サーバー)に転送
$ scp -i ~/.ssh/○○○.pem ~/.ssh/○○○.pem ec2-user@[サーバーA(踏み台サーバー)のパブリックIPアドレス]:.ssh
scp [オプション] コピー元パス 保存先パス という構成になっています
- scp -i ~/.ssh/○○○.pem -iはオプションでssh接続に使用する鍵ファイルを指定しています
- ~/.ssh/○○○.pem コピー元のパス
#サーバーA(踏み台サーバー)にSSH接続しサーバーA(踏み台サーバー)からサーバーBにSSH接続する
今までの手順で要件を満たす構築ができているので確認します。
サーバーA(踏み台サーバー)にSSH接続
$ ssh -i ~/.ssh/○○○.pem ec2-user@[サーバーA(踏み台サーバー)のパブリックIPアドレス]
サーバーA(踏み台サーバー)からサーバーBにSSH接続
$ ssh -i ~/.ssh/○○○.pem ec2-user@[サーバーBのプライベートIPアドレス]
以下のように表示されれば接続できています。
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|
#最後に
ご覧いただきありがとうございました。
初心者のため間違っている点などありましたらご指摘いただけると幸いです。
#参考
scpコマンド
https://qiita.com/chihiro/items/142ebe6980a498b5d4a7