【AWSに入門してみた】EC2でサーバを立ち上げて、SSHアクセスする

2021/9/14

(最終更新: 2022/9/25

【AWSに入門してみた】EC2でサーバを立ち上げて、SSHアクセスする

はじめに

今回の記事の目的

AWSに入門してみる。

EC2サーバ(Linux)を構築し、サーバにログイン(SSHアクセス)を実施する。

前提

  • AWSマネジメントコンソールにアクセスできること。
  • IAMユーザに対し、必要なAWSサービスの利用を許可するIAMロールが紐づいていること。
  • teratermまたはWindowsPowershellなど、SSH接続できるターミナルがインストールされていること。

今回の構成

インターネットからアクセス可能なパブリックサブネットを作成し、その中にEC2インスタンスを起動します。

ec2構成図

EC2を利用したサーバの構築手順

VPCを作成

VPCを作成する。

AWSコンソール画面の「VPC」から「VPCを作成」を選択。 VPC作成画面

CIDRCIDRブロックは10.0.0.0/24とした。

意味としては以下の通り。

  • プライベートIPアドレスである
  • IPアドレスのネットワーク部が24ビット(10.0.0 までの部分)
  • ネットワーク全体を表すIPアドレス=ホスト部を0としたアドレス(最後の0の部分)
  • ホスト部には、8ビット分(32-24=8)、256個のアドレスを利用可能。10.0.0.1~10.0.0.254のIPアドレスが利用可能。(10.0.0.255はブロードキャストアドレス)
参考資料

CIDR説明 IPv4 CIDRブロック - Qiita

CIDRブロックを計算できるサイト
[CIDRをIPアドレスに展開ツール v2.0.3 -IPv46 – IPアドレス(CIDR)の範囲確認・変換・国判定サイト]

サブネットを作成する

同じVPCコンソールから、サブネットタブを選んで「サブネットを作成」を選ぶ。

VPC IDは先ほど作ったVPCを設定する。 サブネット作成

今回サブネットにはインターネットゲートウェイとの通信を設定して、インターネットからアクセスできるようにしたいので、パブリックサブネットとする。

また、サブネットを配置するアベイラビリティゾーン(AZ)はap-northeast-1a(東京リージョンのAZ-a)を選ぶことにする。

サブネットの名前は、以上の状況を表すpublic-1aとした。

システムを作る際には可用性を高めるためマルチAZ構成を検討する。(マルチAZは基本的にやっておく、マルチリージョンは必要に応じてやることが多い印象)

サブネットをパブリックサブネットとするため、インターネットゲートウェイと、ルートテーブルの設定を行う。

インターネットゲートウェイを作成する

同じVPCコンソールから、インターネットゲートウェイを選んで「インターネットゲートウェイの作成」を選ぶ。

インターネットゲートウェイ

次に、作成したインターネットゲートウェイにチェックマークを入れ、「アクション」→「VPCにアタッチ」。先ほど作成したVPCにアタッチする。

ルートテーブルの作成・設定

VPCコンソールから、ルートテーブルを選んで「ルートテーブルの作成」を選ぶ。 VPCは先ほど作ったVPCを選ぶ。

ルートテーブルの作成

作成したルートテーブルを選び、「ルートを編集」→「ルートを追加」で、0.0.0.0/0(フルオープン)から、インターネットゲートウェイへのアクセスルートを追加する。

ルートテーブルの設定

ルートテーブルを選択し、「サブネットの関連付け」→「サブネットの関連付けを編集」から、先ほど作ったサブネット(public-1a)を関連付ける。

EC2インスタンスを起動する

マネジメントコンソールからEC2のコンソール画面に移動。「インスタンスを起動」を選ぶ。

AMIの選択

AMI選択画面では「Amazon Linux」を選択。

Amazon Linux

AMIとは、サーバを立ち上げるときの設定ファイルのようなもので、自分で作成することもできるし、AWS側が用意しているものを使うこともできる。また、サードパーティー製のものを買って使うこともできる。

インスタンスタイプの選択

インスタンスタイプの選択。今回は無料のt2.microを選んでおく。

インスタンスタイプの選択

インスタンスタイプとは、起動するサーバのスペックを表すもの。(詳細は「インスタンスタイプ」「インスタンスファミリー」で検索)

詳細を設定する

インスタンス設定

  • ネットワーク:先ほど作ったVPC
  • サブネット:先ほど作ったパブリックサブネット
  • 自動割り当てパブリックIP:有効(自動でパブリックIPアドレスをふってくれる)

ストレージの追加

EC2にはEBS(Elastic Block Store)と呼ばれるストレージをアタッチできる。

S3やEFSにデータを格納するのに比べるとコストは高いがI/O性能は良い。

デフォルト設定とする。

EBS設定

タグの追加

今回はNameタグのみつけておく。

タグの追加

セキュリティグループの設定

セキュリティグループは、アクセス設定のひとかたまりみたいなもので、VPC単位に複数作ることができる。 これをEC2に関連付けることで、インバウンドとアウトバウンドのトラヒックを許可・制限できる。

SSHとHTTPのポートに対し、0.0.0.0/0(フルアクセス)の権限を与えるセキュリティグループを新規作成して、EC2にアタッチする。

おそらく実際の業務システムでは、フルアクセス設定はNG。

セキュリティグループ

キーペアの作成

キーペアを作成し、秘密鍵をダウンロードしておく(EC2アクセス時に使用する)。

キーペアの作成

設定完了

しばらく待つとインスタンスが起動する。

EC2インスタンスへのSSHアクセス

マネジメントコンソールから、起動したEC2のパブリックIPアドレスを確認する。

パブリックIPアドレス

teratermを起動し、ホストに先ほど設定したIPアドレスを入れる。

teraterm

  • ユーザ名:ec2-userとする。
  • RSA/DSA/・・・・鍵を使う にチェックを入れる。
  • 秘密鍵に、EC2作成時にダウンロードしておいた秘密鍵を設定する。

これでサーバにアクセスできる。

業務システムとして利用する際は、プライベートサブネット上にEC2を設置することが多いので、接続方法は別途検討が必要。

こちらなど参考になりそう。

「プライベートサブネットにあるEC2へのアクセス方法を整理してみた」というビデオセッションを公開しました #devio2021 | DevelopersIO

sshコマンドで接続する方法

PowerShellで、以下コマンドを実行することでteratermと同じようにアクセスできた。

> ssh ec2-user@[パブリックIP] -i [秘密鍵ファイル(.pem)のパス]

# 例)
# ssh ec2-user@18.111.111.111 -i C:\Users\user\Documents\AWS\rsa.pem

参考資料:sshコマンドが無い場合:PowerShellでSSHクライアントを使う(Windows 10ネイティブ版) | デジカシ

  • VSCodeの「ターミナル」
  • Windowsターミナル

からも同様に実行可能。

コマンドを打ってみた結果 コマンドを打ってみた結果

おわりに

今回はEC2インスタンスを準備し、起動した上で、SSHアクセスを行なった。

関連記事

EC2へのアクセス時にポートフォワーディングを設定する

ローカルPCのlocalhostからEC2のlocalhostにアクセスできるようにする方法。

EC2へのSSHアクセス時にポートフォワーディングを設定する方法メモ

EC2へのSSHアクセス時にポートフォワーディングを設定する方法メモ

EC2へのSSHアクセス時にポートフォワーディングを設定する方法メモ。

https://bunsugi.com/ec2-port-fowarding

EC2でdockerを立ち上げてみた

dockerを立ち上げてみた内容。 EC2の上でdockerを立ち上げてみたメモ。(通常、あまりやらない構成かも)



個別連絡はこちらへ→Twitterお問い合わせ

プロフィール

プロフィールイメージ

はち子

事業会社のシステム部門で働きはじめて5年目の会社員。システム企画/要件定義/システムアーキテクチャ等。

Twitter→@bun_sugi

過去の記事について

はてなブログに掲載の記事(主にプログラミングメモ)についてはこちらに掲載しております。(本ブログに移行中)

タグ一覧

関連記事

Copyright© 2023, エンジニアを目指す日常ブログ

お問い合わせ|プライバシーポリシー