4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

踏み台サーバー経由のEC2へのSSH接続

Last updated at Posted at 2021-11-16

この記事の対象者

AWSでの踏み台サーバーとは何かを知り、それがどんなメリットデメリットがあるかを知りたい方
接続方法にはどんな種類があって、その接続方法をざっくりと知りたい方
ここでは、OSは、MACを扱っていきます。

#踏み台サーバーでのアクセス
2.png

ローカル環境やインターネット環境から、直接プライベートサブネット内にあるEC2サーバーにアクセスするのではなく、パブリックサブネット内にあるEC2サーバー経由でプライベートサブネット内EC2サーバーにアクセスすることです。

一旦、パブリックサブネット内のEC2サーバーにアクセスするのがポイントですが、このサーバーのことを踏み台サーバーと言います。中継サーバーのことですね。

メリット デメリット
直接インターネットにさらされないので、セキュアなアクセスにできる 接続手順が複雑
アクセスが踏み台サーバー経由に限定されるので、プライベートサブネットのEC2サーバーの負荷が軽減できる ログインユーザーが増えた場合に秘密鍵を管理するのが手間になる

#プライベートサブネット内EC2への接続方法

①踏み台サーバー経由のEC2へのSSH接続
今回のメインテーマですね。以下に解説させていただきます。

AWS System Manager Session Manegerを使用する
ここでは、扱いませんが、トレンドな技術なのでいずれは扱っていきたいですね。
CLIを使用して踏み台サーバーなしでダイレクトにプライベートEC2インスタンスにアクセスできます。

#接続手順
1.png

①vpcを作成
②サブネットを作成
③vpcにインターネットゲートウェイをアタッチ
④ルートテーブルの設定
⑤EC2インスタンスを設置
⑥NATゲートウェイをパブリックサブネットにアタッチ
⑦セキュリティーグループの設定
⑧プライベートサブネットEC2インスタンスへのログイン

・vpcを作成してその中に、プライベート・パブリックサブネットを作成します。インターネットゲートウェイをアタッチしてパブリックサブネットから外部への通信を通します。各サブネットにEC2インスタンスを設置します。ナットゲートウェイをパブリックサブネットに設置して、プライベートEC2インスタンスから外部への通信が通るようにします。
##VPCの作成
スクリーンショット 2021-11-09 21.44.41.png
名前タグ:適当な名前
IPv4 CIDERブロック:10.0.0.0/21  
・ここでIPアドレスの使用範囲を設定しています。「/21」で区切ることにより、10.0.0.0 から10.0.7.255の間の2,048個IPアドレスがこのvpc内で使用できるようにしています。CIDR 表記では /28~/16 がvpcの範囲になります。
・上記を例にして作成ボタンを押しましょう。

##サブネットの作成
・サブネットは、vpcのIPアドレスレンジのことです。vpcの中でさらに使用できるIPアドレス範囲を指定して、その論理的な空間に対して役割を持たせます。外部と通信する場合は、パブリックサブネットになり、そうでない場合は、結果としてプライベートサブネットと呼ばれます。パブリックサブネットにするためには、vpcにインターネットゲートウェイをアタッチする必要があります。
サブネットは、最大で200個作成できます。

まずは、パブリックサブネットから作成していきましょう。
スクリーンショット 2021-11-09 21.52.52.png
・vpc→サブネット→サブネットを作成まで進みます
・vpc ID:今回作成したvpcを選択します

スクリーンショット 2021-11-09 21.53.04.png

・アベイラビリティーゾーン:東京リージョンの1a
アベイラビリティーゾーンとは、1つまたは複数のデータセンターの集合体のことで、vpcが論理的な区分であるのに対して、アベイラビリティーゾーンは、物理的な区分になります。
・IPv4 CIDERブロック:10.0.0.0/24
サブネットのCIDERブロック範囲もvpcと同様/28~/16 となります。
1つのサブネットを作成するごとに、5つのIPアドレスを消費します。内訳は、ネットワークアドレスとブロードキャストアドレスでそれぞれ1つずつ、AWSが予約しているアドレスが3つです。
・サブネットの種類は、パブリックサブネット、プライベートサブネットの他にナットサブネット、トランジットサブネットなどがありますが、主にこの2つだけ押さえておけば問題ないと思います。

##vpcにインターネットゲートウェイをアタッチ
スクリーンショット 2021-11-09 21.55.55.png
・インターネットゲートウェイの作成をクリック

スクリーンショット 2021-11-09 21.56.31.png

・名前をつけて作成しましょう

スクリーンショット 2021-11-09 22.03.21.png
・アクションタブの中の「vpcにアタッチ」
スクリーンショット 2021-11-09 22.06.48.png
・今回作成したvpcを選択してアタッチ

##ルートテーブルの設定
ルートテーブルとは、サブネットの通信の経路を定めたルールのことです。今回のケースでは、サブネットからインターネットゲートウェイへの通信するルートテーブルを作成します。
スクリーンショット 2021-11-09 22.15.23.png
・サブネット→作成したパブリックサブネットを選択→ルートテーブルタブをクリック
スクリーンショット 2021-11-09 22.17.41.png
・ルート編集でこの画面に入ったら、「ルートを追加」をクリック
送信先:0.0.0.0/0    
ターゲット:作成したインターネットゲートウェイ
このルールの追加により、サブネットからインターネットゲートウェイへ通信できるようになります。

##EC2インスタンスの設置
パブリックサブネット
作成したパブリックサブネットとプライベートサブネットにそれぞれEC2インスタンスを配置していきます。
スクリーンショット 2021-11-09 22.30.16.png
・EC2画面に入り、「インスタンスを起動」をクリック

スクリーンショット 2021-11-09 22.30.44.png
スクリーンショット 2021-11-09 22.31.01.png
・無料枠が使える方は、無料枠用のAmazon Linuxを選択していきます。

スクリーンショット 2021-11-09 22.31.41.png
・ネットワーク:作成したvpc
・サブネット:作成したパブリックサブネット
・自動割り当てパブリックIP:有効
スクリーンショット 2021-11-09 22.32.16.png
・タグの作成では、Nameキーに、分かりやすい名前を値に入力しておきます。
スクリーンショット 2021-11-09 22.32.35.png
タイプ:SSH
ソース:カスタム
スクリーンショット 2021-11-09 22.33.09.png
・次に進み、起動をクリック。EC2インスタンスにアクセスするためのキーペアを新規で作成してダウンロードするか、既に作成してある場合は、既存のキーペアを使用するかをこの画面で選択していきます。今回の例では、作成済みのため、既存のキーペアを選択。インスタンスの作成をクリックしましょう。
スクリーンショット 2021-11-09 22.33.40.png
・インスタンスの状態が実行中になったことを確認

次に作成したEC2インスタンスへのアクセスは、パブリックIPアドレスを経由することになりますが、インスタンスが停止してしまうと、パブリックIPアドレスが変わってしまい、固定してアクセスしたい人にとって使い勝手がいいとは言えません。
そこで、外部アクセス用のアドレスを固定するために、ElasticIPをアタッチします。
ElasticIPは、EC2インスタンスにアタッチされていて、かつそのインスタンスが実行中であれば、無料となりますが、追加した場合やアタッチされていない場合は、単位時間で使用料金が請求されるので注意しましょう。

スクリーンショット 2021-11-13 22.14.16.png
・左メニューのElastic IPから「Elastic IPアドレスを割り当てる」をクリック

スクリーンショット 2021-11-13 22.14.28.png
ネットワークボーダーグループは、EC2インスタンスを作成したときのアベイラビリティーゾーンを選択

スクリーンショット 2021-11-13 22.14.47.png
・作成できたら、アクション→Elastic IPアドレスの関連付け と進んでいきます
スクリーンショット 2021-11-13 22.15.07.png
作成したEC2インスタンスを選択して、関連付けます。

プライベートサブネットへのEC2インスタンス設置
パブリックサブネットへのEC2設置との差異を説明していきます。

スクリーンショット 2021-11-13 22.35.13.png
・パブリックサブネットへのEC2インスタンス設置と同様に、プライベートもEC2インスタンスを作成していきます。
ネットワーク:作成したvpc
サブネット:プライベートサブネット
自動割り当てパブリックIP:無効化  

##パブリックサブネットへNATゲートウェイのアタッチ
NATゲートウェイとは、ネットワークアドレス変換サービスです。パブリックサブネットに設置し、多対1のアドレス変換を行います。プライベートサブネットからはインターネットにアクセスしたいけど、インターネットからプライベートサブネットにアクセスされたくない場合に使用します。

スクリーンショット 2021-11-15 21.37.01.png
vpcから左メニューのNATゲートウェイ→NATゲートウェイの作成と進む

スクリーンショット 2021-11-15 21.40.06.png
サブネット:作成したパブリックサブネット
接続タイプ:パブリック
ElasticIPの割り当てをクリックして、NATゲートウェイを作成します。

##セキュリティーグループの設定
EC2インスタンスにどの通信を許可するのか設定していきます。今回は、SSH接続で全てのIPアドレスからの通信を受け入れるという設定にしますが、本来ここでは、IPアドレスの範囲を指定したりして、セキュリティを高めます。作成したセキュリティーグループをEC2インスタンスにアタッチしていきます。
パブリックサブネット
スクリーンショット 2021-11-12 22.54.11.png
・vpc→セキュリティーグループ→セキュリティーグループを作成
スクリーンショット 2021-11-12 22.55.43.png
・作成したvpcを選択
・インバウンドルール 
タイプ:SSH 今回は、0.0.0.0/0とします。
・説明オプション:区別できる名前をつけます。
スクリーンショット 2021-11-09 22.53.59.png
上記で作成したセキュリティーグループをパブリックサブネットにアタッチしていきます。
・作成したEC2インスタンスを選択します。アクション→セキュリティ→セキュリティーグループと進みます。
スクリーンショット 2021-11-12 23.07.34.png
・作成したセキュリティーグループを選択して、EC2にアタッチされていたセキュリティーグループを削除します。

プライベートサブネット
スクリーンショット 2021-11-15 22.02.19.png
プライベートサブネット用のルートテーブルを作成していきましょう
vpcは、今回作成したvpcを選択します。

スクリーンショット 2021-11-15 22.02.38.png
作成したら、編集していきます。ルート→ルートを編集へ進みます。

スクリーンショット 2021-11-15 22.03.24.png
ルートを追加
送信先:0.0.0.0.0/0
ターゲット:今回作成したNATゲートウェイ

スクリーンショット 2021-11-15 22.04.13.png
アクション→サブネットの関連付けを編集

スクリーンショット 2021-11-15 22.15.21.png
作成したプライベートサブネットを選択して保存

##プライベートサブネットEC2インスタンスへのログイン
最後に、EC2インスタンスへログインします。
流れとしては、パブリックサブネットEC2インスタンスにキーペアをアップロードして、パブリックEC2インスタンスにログインした状態でアップロードされたキーペアを使用して、プライベートサブネットEC2へログインとなります。

MAC OSの方は、ターミナルを起動します。

AWS SSHサーバー・クライアントの仕様でキーペアの権限を読み取り専用にしてあげないと、ログインできないので、権限を変更します。

chmod 400 (キーペア名)

次に、SCPコマンドでパブリックサブネットにキーペアを転送します。

scp -i (キーペア名) (アップロードファイルの指定=キーペア名) ec2-user@(パブリックIPアドレスorElastic IPアドレス):(アップロード先フォルダの指定)

アップロードができると、ターミナル右側に下のような表示がされます
スクリーンショット 2021-11-16 21.43.16.png

キーペアをパブリックサブネット内EC2インスタンスへアップロード後、ローカル環境からパブリックEC2インスタンスへログインします。

ssh -i (キーペア名) ec2-user@(パブリックIPアドレスorElastic IPアドレス)

パブリックEC2インスタンスにログイン後、cdでアップロードフォルダまで移動します。
移動後、そのアップロードしたキーペアを仕様してプライベートサブネットEC2へログインします。
ログイン方法は、上記sshコマンドを使用して、@以降をプライベートサブネット用のIPアドレスを使用するだけです。


この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com


4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?