親バカエンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことや書き残しておきたいことを載せています。

AWS(EC2)でのサーバ構築とキーペア(鍵)を使ったSSH接続


AWS(EC2)でのサーバ構築

AWSでのEC2サーバ構築は非常に簡単にできます。
スペックは高くないですが、1年間の無料枠もあるのでLinuxの操作に慣れたいという方などは勉強がてら触ってみてはいかがでしょうか。

Linuxの操作をするためにはSSH接続をする必要がありますが、AWSでは通常SSH接続をするためにはキーペア(鍵)による鍵認証が必要になります。
ここではAWSの簡単構築と、キーペア(鍵)を使ったSSH接続について記載したいと思います。

※今回は、AWSのアカウントを保持している、または、登録したことが前提で、サーバは簡易的な設定(もちろんwebで使う点では問題ありません)で1台のみ設定するものとします。
また、構築するサーバはCentOS6ベースのAmazon Linuxになります。
CentOS7ベースのAmazon Linux2を構築したい場合も今回のSSH接続までであればほとんど同一手順で進めることができるのですが、途中サーバのタイプを選択する手順でAmazon Linux2を選択するようにしてください。

EC2作成・起動

AWSのアカウントにログインしている状態からスタートします。
まず最初にリージョンが目的の場所になっていることを確認してください。
今回は日本国内向けサービスなので、アジアパシフィック(東京)になっていることを確認します。

f:id:tomotomo1129:20180712133203p:plain:w150

次に、ヘッダーメニューで「サービス」->「EC2」と進みます。

f:id:tomotomo1129:20180712133214p:plain

EC2のメニューページに遷移されますので、サイドメニューの「インスタンス」を選択します。

f:id:tomotomo1129:20180712133228p:plain:w150

次に「インスタンスの作成」をクリックします。

f:id:tomotomo1129:20180712133244p:plain

すると、「ステップ 1: Amazon マシンイメージ (AMI)」の画面でマシンイメージの選択画面に移ります。

AMI は、インスタンスの作成に必要なソフトウェア構成 (OS、アプリケーションサーバー、アプリケーション) を含むテンプレートです。

と記載があるように、どのような構成のサーバを作成するのかを選択する画面なので、ここでの選択はサーバ構築で大きな影響が出ます。
よくよく注意して選択してください。

先述しました通り、今回はCentOS6ベースで構築したいのでAmazon Linuxを選択します。
名前が長くてわかりづらいですが、「Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type」というものになります。
※CentOS7ベースで構築したい場合は1つ上にあるAmazon Linux2を選択してください。

f:id:tomotomo1129:20180712133255p:plain

次にインスタンスタイプの選択になりますが、ここでのタイプはサーバのスペックに関係があります。
以下をご覧いただければ分かると思いますが、それぞれタイプごとにvCPUやメモリの数値が異なってきます。
今回私の方ではt2.smallを選択したいと思います。

無料利用枠で使いたい場合はt2.microを選択してください。

選択したら「確認と作成」を押下します。

f:id:tomotomo1129:20180712133327p:plain

すると一気に「ステップ 7: インスタンス作成の確認」に飛びます。

※このあたりある程度詳しい方は、SSHの接続ができるようにセキュリティグループでポートの22を開放しなくても大丈夫なの?
と疑問に思われるかもしれませんが、インスタンス作成と同時に新しいセキュリティグループが作成され、デフォルトでポートの22だけ開放されているのでこのまま進んで問題ありません。

ちなみに、インスタンスタイプの選択画面で、「次の手順: インスタンスの詳細の設定」をクリックすれば

ステップ 3: インスタンスの詳細の設定
ステップ 4: ストレージの追加
ステップ 5: タグの追加
ステップ 6: セキュリティグループの設定

も設定可能ですが、今回は細かい設定は省略するので、ここでは上記の設定をする必要はありません。

f:id:tomotomo1129:20180712133347p:plain

ここで「作成」をクリックするとキーペア(鍵)に関するモーダルが出現します。

f:id:tomotomo1129:20180712133402p:plain

キーペア名は適当に入力し(今回はaws-keyとしています)、キーペアのダウンロードをクリックしてください。
キーペアをダウンロードすると「インスタンスの作成」がクリックできるようになります。

注意書きの通り、ここでダウンロードしたファイルを失くしてしまうと二度とダウンロードできなくなります。
また、このようなキーファイルは厳重に保管し、絶対に外部に漏れないようにしてください。

インスタンスを作成を押下すれば以下の画面になり、インスタンスが作成されます。

f:id:tomotomo1129:20180712133420p:plain


キーペア(鍵)を使ったSSH接続

上記手順によってインスタンスは起動している状態になるので、あとはSSH接続です。

先ほどダウンロードした鍵を~/.sshに移動させ、権限を付与しましょう。
「~/Downloads/aws-key.pem」の箇所はそれぞれの環境によって

cp ~/Downloads/aws-key.pem ~/.ssh/aws-key.pem
sudo chmod 700 ~/.ssh/aws-key.pem

また、「サービス」->「EC2」->「インスタンス」と進めば起動させたインスタンスの情報が見れます。
作成したインスタンスを選択すればパブリックDNSが表示されるのでコピーしておきましょう。

f:id:tomotomo1129:20180712133436p:plain

あとは以下のSSHコマンドでOKです。

ssh -i ~/.ssh/aws-key.pem ec2-user@ec2-XXX-XXX-XXX-XXX.ap-northeast-1.compute.amazonaws.com

※「aws-key.pem」、「XXX-XXX-XXX-XXX」の箇所は環境によって異なるので、それぞれのキーペア名、パブリックDNSを入力してください。

以下のような画面が出ればSSHでのログインは成功です。

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/
2 package(s) needed for security, out of 2 available
Run "sudo yum update" to apply all updates.