DEV Community

kaede
kaede

Posted on • Updated on

AWS 基礎 Part 5 -- 踏み台と本番用の EC2 インスタンスを作成する

VPC 1 つとサブネット 3 つを作成

  • 全てを包括する VPC
  • 踏み台サーバーとロードバランサーを入れる公開サブネットA
  • ロードバランサーを入れる公開サブネットC
  • 本番の非公開サーバー A と C を入れる非公開サブネットA

これらを作成する。

https://youtu.be/Y-Mc2OenReA?t=998

クラインさんの動画を参考にする
インターネットゲートウェイ周りは略されているので注意。

Image description

  • 10.1.0.0/16 に vpc-elb-ec2 の名前で VPC 作成

Image description

  • 10.1.0.0/24 に klein-public-1a の名前でサブネット作成
  • 10.1.1.0/24 に klein-private-1a の名前でサブネット作成
  • 10.1.2.0/24 に klein-public-1c の名前でサブネット作成

Image description

  • インターネットゲートウェイ (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 する。

Image description

すると、インスタンスが作成できる。

同様に

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 に絞るべきらしい。

Image description

これで、以下の役割の 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
Enter fullscreen mode Exit fullscreen mode

.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
Enter fullscreen mode Exit fullscreen mode

ルートのみ読み書きの権限をつける。

これで ssh 接続できるようになるらしい。


ローカルPC から踏み台サーバーに public IP と鍵で ssh 接続する

https://youtu.be/Y-Mc2OenReA?t=1686

Image description

踏み台サーバー 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-*-*-*** ~]$ 
Enter fullscreen mode Exit fullscreen mode

実際にやってみると 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
Enter fullscreen mode Exit fullscreen mode

このように

  • 接続のために使うキー
  • 今転送するものが置いてある場所
  • 送るユーザー@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
Enter fullscreen mode Exit fullscreen mode

これで転送できた。

転送先に /home/ec2-user/ と絶対パスで書くのは必要だった。
相対パスの ~ では開けなかった。


踏み台サーバーからプライベートサーバーに SSH 接続する

ssh -i ~/.ssh/elb-ec2-test-key.pem ec2-user@18.***.**.**

ls
elb-ec2-test-key.pem
Enter fullscreen mode Exit fullscreen mode

ホームディレクトリに鍵ファイルが入っているのを確認できた。

mv elb-ec2-test-key.pem ./.ssh/
Enter fullscreen mode Exit fullscreen mode

.ssh/ フォルダに移す。

ssh -i .ssh/elb-ec2-test-key.pem ec2-user@10.*.*.*

[ec2-user@ip-10-*-*-* ~]$ 
Enter fullscreen mode Exit fullscreen mode

この鍵を使ってサーバー A にプライベートアドレス指定で接続する。

これでプライベートになっている サーバー A にアクセスすることができた。


まとめ

踏み台サーバー経由でしかアクセスできない EC2 サーバーを作るためには

  1. VPC 内部の同じリージョンA に同じ鍵を利用して、踏み台サーバーのサブネットと本番サーバーのサブネットを作成。鍵はローカルに DL される。
  2. 各サブネットに EC2 インスタンスを作成。
  3. VPC と 踏み台サーバーのサブネットにインターネットゲートウェイを接続。
  4. ローカルで ssh コマンドで、鍵を使って public アドレスで踏み台サーバーに SSH 接続確認。
  5. ローカルで scp コマンドで、鍵を使って踏み台サーバーに鍵をコピー。
  6. 踏み台サーバーに鍵を使って入って、private アドレスで本番サーバーに鍵を使って SSH 接続。

これでインターネットからはアクセスできないが、同一 VPC 内部にある踏み台サーバーからはアクセスできる本番サーバーを作ることができる。

Top comments (0)