VPC 1 つとサブネット 3 つを作成
- 全てを包括する VPC
- 踏み台サーバーとロードバランサーを入れる公開サブネットA
- ロードバランサーを入れる公開サブネットC
- 本番の非公開サーバー A と C を入れる非公開サブネットA
これらを作成する。
https://youtu.be/Y-Mc2OenReA?t=998
クラインさんの動画を参考にする
インターネットゲートウェイ周りは略されているので注意。
- 10.1.0.0/16 に vpc-elb-ec2 の名前で VPC 作成
- 10.1.0.0/24 に klein-public-1a の名前でサブネット作成
- 10.1.1.0/24 に klein-private-1a の名前でサブネット作成
- 10.1.2.0/24 に klein-public-1c の名前でサブネット作成
- インターネットゲートウェイ (igw-0adc) を作成
- VPC (vpc-elb-ec2) に接続
- サブネットのルートテーブルにインターネットゲートウェイ (igw-0adc) を接続
EC2 インスタンス 2 つを作成。動作用。
https://youtu.be/Y-Mc2OenReA?t=1049
- 名前に elb-ec2-test-A
- マシンイメージ に Amazon Linux 2
- インスタンスタイプに t2.micro
- VPC に vpc-elb-ec2
- サブネットに klein-private-1a
- セキュリティグループのポート番号に 80
- セキュリティグループのソースに 10.1.0.0/24
これでローンチする。
次にキーペアを作成する
- 名前に elb-ec2-test-key
- キーペアタイプに RSA
- プライベートキーのフォーマットに .pem
これで作成して DL する。
すると、インスタンスが作成できる。
同様に
elb-ec2-test-B も作成する。
A と同じ VPC とサブネット内部に作る。
- セキュリティグループ
- キーペア
これらは A で作ったのを利用。
EC2 インスタンスを更に 1 つ作成。踏み台用。
- 名前を elb-ec2-step
- サブネットに klein-public-1a
- 自動割り当て Public IP に 有効
- セキュリティグループに ポート22 で ソース 0.0.0.0/0
キーペアは A で作ったものを利用。
セキュリティグループは、本当は作業用ローカルマシンの IP に絞るべきらしい。
これで、以下の役割の EC2 インスタンス 3 つが作成できた。
- elb-ec2-test-A: 実際のサーバー
- elb-ec2-test-B: 実際のサーバー
- elb-ec2-step: 踏み台サーバー
EC2 インスタンスに入る準備をする
ローカルの ~/Downloads には先ほど DL した elb-ec2-test-key が入っている状態。
これを使って先ほど作成したインスタンスにローカルからアクセスする。
cp -a elb-ec2-test-key.pem ~/.ssh
.ssh フォルダにコピーして
chmod 600 ~/.ssh/elb-ec2-test-key.pem
~/.ssh/elb-ec2-test-key.pem
-rw-------@ 1 kaede0902 staff
1674 Jan 28 17:01
/Users/kaede0902/.ssh/elb-ec2-test-key.pem
ルートのみ読み書きの権限をつける。
これで ssh 接続できるようになるらしい。
ローカルPC から踏み台サーバーに public IP と鍵で ssh 接続する
https://youtu.be/Y-Mc2OenReA?t=1686
踏み台サーバー elb-ec2-step の public IP アドレスを確認
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html
ssh -i + インスタンスのキー + ユーザー名(新規?)@インスタンスの public アドレス
これでログインできる
ssh -i ~/.ssh/elb-ec2-test-key.pem \
ec2-user@18.***.**.**
The authenticity of host '18.***.**.**'
can't be established.
ED25519 key fingerprint is SHA256:****/****.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?
yes
Authenticated to 18.18.***.**.**
([18.***.**.**]:22) using "publickey".
[ec2-user@ip-10-*-*-*** ~]$
実際にやってみると ec2-user として ec2 インスタンスに
接続することができた。
ローカルPC から踏み台サーバーに SSH 鍵をコピーする
https://youtu.be/Y-Mc2OenReA?t=1836
SCP コマンドで、鍵を踏み台サーバーにコピーする。
https://e-words.jp/w/scp%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89.html
SCP コマンドは、別のマシンにファイルを送信するコマンド。
https://qiita.com/chihiro/items/142ebe6980a498b5d4a7
-i の指定で ssh 鍵を転送する。
この鍵は先ほどローカルPC に DL して、踏み台サーバーへの接続にも使った鍵だ。
またこの鍵はプライベートサーバーに接続するためにも使える。
なので踏み台サーバーからプライベートサーバーに繋ぐために SCP コマンドで踏み台サーバーとプライベートサーバーで共通のこの鍵をコピーする。
https://hacknote.jp/archives/49429/
scp コマンドはこの記事を参考にして
scp -i keyFile keyFileFolder/keyFile /
ec2-user@{ipaddress}:path
このように
- 接続のために使うキー
- 今転送するものが置いてある場所
- 送るユーザー@IPアドレス:/転送するものを置くディレクトリ
を指定して送るようだ。
scp -i \
~/.ssh/elb-ec2-test-key.pem \
~/.ssh/elb-ec2-test-key.pem \
ec2-user@18.***.**.**:/home/ec2-user/
elb-ec2-test-key.pem
100% 1674 115.4KB/s 00:00
これで転送できた。
転送先に /home/ec2-user/ と絶対パスで書くのは必要だった。
相対パスの ~ では開けなかった。
踏み台サーバーからプライベートサーバーに SSH 接続する
ssh -i ~/.ssh/elb-ec2-test-key.pem ec2-user@18.***.**.**
ls
elb-ec2-test-key.pem
ホームディレクトリに鍵ファイルが入っているのを確認できた。
mv elb-ec2-test-key.pem ./.ssh/
.ssh/ フォルダに移す。
ssh -i .ssh/elb-ec2-test-key.pem ec2-user@10.*.*.*
[ec2-user@ip-10-*-*-* ~]$
この鍵を使ってサーバー A にプライベートアドレス指定で接続する。
これでプライベートになっている サーバー A にアクセスすることができた。
まとめ
踏み台サーバー経由でしかアクセスできない EC2 サーバーを作るためには
- VPC 内部の同じリージョンA に同じ鍵を利用して、踏み台サーバーのサブネットと本番サーバーのサブネットを作成。鍵はローカルに DL される。
- 各サブネットに EC2 インスタンスを作成。
- VPC と 踏み台サーバーのサブネットにインターネットゲートウェイを接続。
- ローカルで ssh コマンドで、鍵を使って public アドレスで踏み台サーバーに SSH 接続確認。
- ローカルで scp コマンドで、鍵を使って踏み台サーバーに鍵をコピー。
- 踏み台サーバーに鍵を使って入って、private アドレスで本番サーバーに鍵を使って SSH 接続。
これでインターネットからはアクセスできないが、同一 VPC 内部にある踏み台サーバーからはアクセスできる本番サーバーを作ることができる。
Top comments (0)