AWS EC2にSSHでアクセスする方法

# AWSでEC2を立てて、ターミナルでローカルからSSH接続する方法について説明します。


環境
OS： Mac OSX

##### 大まかな手順
1. EC2インスタンス作成（無料枠）
2. アクセス鍵作成
3. ローカルからSSH接続

![aws.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531595/41ff498b-8f46-ca6f-27ff-567d205795c3.png)

EC2とはAWSで提供されているクラウドサービスの１つで、仮想サーバーを利用できます。

# 1. EC2インスタンス作成（無料枠）
### ステップ 1: AMIの選択
EC2のページを開き、ダッシュボード画面から「インスタンスを起動」を選択します。
![スクリーンショット 2021-01-16 13.33.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531595/c6d8c21c-7fdd-d20f-de10-6aba09f36001.png)

今回は、無料枠の[Amazon Linux 2 AMI (HVM), SSD Volume Type]を利用します。
赤枠の選択ボタンをクリックします。
![スクリーンショット 2021-01-16 13.36.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531595/47ed89de-c4c7-9c16-6737-c20e3c8cff9f.png)


### ステップ 2: インスタンスタイプの選択
[t2.micro]を選び、[次のステップ：インスタンスの詳細の設定]をクリックします。
![スクリーンショット 2021-01-16 13.40.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531595/9dab312b-b38a-47ea-1b37-14e6346d9f41.png)

### ステップ 3: インスタンスの詳細の設定
特に変更の必要なく、[次のステップ:ストレージの追加]をクリックします。
![スクリーンショット 2021-01-16 13.46.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531595/53375c0d-4a5b-fe6e-6dc0-bf18440aaff4.png)

### ステップ 4: ストレージの追加
30GBまで無料枠みたいですが、その範囲内で必要な量で設定します。
今回はとりあえず、８GiBにして、[次のステップ：タグの追加]をクリックします。
![スクリーンショット 2021-01-16 13.50.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531595/3b2c845b-03c9-5432-a26e-33f4d685aae2.png)

### ステップ 5: タグの追加
タグはなくてもいいですが、複数プロジェクトを作成している場合や複数インスタンスを利用する場合はあると便利です。
[次のステップ：セキュリティーグループの設定]をクリックします。
![スクリーンショット 2021-01-16 13.53.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531595/0279823a-d590-9faf-3df6-652f847548cf.png)

### ステップ 6： セキュリティグループの設定
接続設定します。今回は個人情報を含まないサーバーを立ち上げるので、0.0.0.0で問題ありません。
[ルールの追加]ボタンから、SSH, HTTP, HTTPSを選んで追加し、[確認と作成]をクリックします。
![スクリーンショット 2021-01-16 13.54.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531595/0059df5c-65b5-3ffe-df8b-8f57431e6a12.png)

### ステップ 7: インスタンスの作成と確認
内容を一応確認して、設定が正しくできていれば[起動]をクリックします。
![スクリーンショット 2021-01-16 13.57.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531595/aec7bd97-7a04-84a8-cb4d-d15fd7b83765.png)

[既存のキーペアを選択するか、新しいキーペアを作成します。]ウィンドウが立ち上がったら、
①：「新しいキーペアの作成」を選択→②：わかりやすいキーペア名を入力→③→④の順でクリックしてインスタンスを作成します。
![スクリーンショット 2021-01-16 14.06.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531595/a52adb1f-22e6-3c56-64a4-45b0714492cc.png)

すると作成ステータスの画面が表示されるので、[インスタンスの表示]をクリック
![スクリーンショット 2021-01-16 14.17.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531595/e610abf3-0f6d-a3ee-d5c5-2926dff58511.png)

作成されたインスタンスの状態が表示されるので、
青文字のインスタンスIDをクリックしてインスタンスの詳細を開きます。
![スクリーンショット 2021-01-16 15.08.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531595/3c83215e-fe45-8e80-8ec4-87effa90e083.png)

詳細が表示されたら、画面右側の[接続]をクリックします。
![スクリーンショット 2021-01-16 14.18.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531595/74be588b-b417-e209-6f4c-12b850920906.png)

インスタンスへの接続方法が表示されます。
ダウンロードした鍵ファイル(myaccesskey.pem)の保存場所で、赤枠の２つのコマンドを実行すればSSHでの接続は完了です。
![スクリーンショット 2021-01-16 15.06.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531595/15ac2817-b827-7012-743f-6e9453a1577a.png)

```
$ chmod 400 myaccesskey.pem
$ ssh -i "myaccesskey.pem" ec2-user@ec2-00-000-000-000.ap-northeast-1.compute.amazonaws.com

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

https://aws.amazon.com/amazon-linux-2/
2 package(s) needed for security, out of 5 available
Run "sudo yum update" to apply all updates.
```
（続き）

「`sudo yum update`を実行してください」と表示されているので、`sudo yum update`を入力してEnter

```
Run "sudo yum update" to apply all updates.
[ec2-user@ip- ~]$ sudo yum update
```
(続き)

```
[ec2-user@ip- ~]$ sudo yum update
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                               | 3.7 kB     00:00     
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ chrony.x86_64 0:3.2-1.amzn2.0.5 を 更新
---> パッケージ chrony.x86_64 0:3.5.1-1.amzn2.0.1 を アップデート
--> 依存性の処理をしています: libnettle.so.4()(64bit) のパッケージ: chrony-3.5.1-1.amzn2.0.1.x86_64
---> パッケージ cloud-init.noarch 0:19.3-3.amzn2 を 更新
---> パッケージ cloud-init.noarch 0:19.3-4.amzn2 を アップデート
---> パッケージ p11-kit.x86_64 0:0.23.21-2.amzn2.0.1 を 更新
---> パッケージ p11-kit.x86_64 0:0.23.22-1.amzn2.0.1 を アップデート
---> パッケージ p11-kit-trust.x86_64 0:0.23.21-2.amzn2.0.1 を 更新
---> パッケージ p11-kit-trust.x86_64 0:0.23.22-1.amzn2.0.1 を アップデート
---> パッケージ tzdata.noarch 0:2020a-1.amzn2 を 更新
---> パッケージ tzdata.noarch 0:2020d-2.amzn2 を アップデート
--> トランザクションの確認を実行しています。
---> パッケージ nettle.x86_64 0:2.7.1-8.amzn2.0.2 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package            アーキテクチャー
                                バージョン                リポジトリー     容量
================================================================================
更新します:
 chrony             x86_64      3.5.1-1.amzn2.0.1         amzn2-core      258 k
 cloud-init         noarch      19.3-4.amzn2              amzn2-core      924 k
 p11-kit            x86_64      0.23.22-1.amzn2.0.1       amzn2-core      321 k
 p11-kit-trust      x86_64      0.23.22-1.amzn2.0.1       amzn2-core      130 k
 tzdata             noarch      2020d-2.amzn2             amzn2-core      481 k
依存性関連でのインストールをします:
 nettle             x86_64      2.7.1-8.amzn2.0.2         amzn2-core      329 k

トランザクションの要約
================================================================================
インストール               ( 1 個の依存関係のパッケージ)
更新          5 パッケージ

総ダウンロード容量: 2.4 M
Is this ok [y/d/N]: 
```

コレでアップデートしていいか確認されたので、`y`を入力してEnter

```
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/6): cloud-init-19.3-4.amzn2.noarch.rpm                        | 924 kB  00:00:00     
(2/6): chrony-3.5.1-1.amzn2.0.1.x86_64.rpm                       | 258 kB  00:00:00     
(3/6): nettle-2.7.1-8.amzn2.0.2.x86_64.rpm                       | 329 kB  00:00:00     
(4/6): p11-kit-0.23.22-1.amzn2.0.1.x86_64.rpm                    | 321 kB  00:00:00     
(5/6): p11-kit-trust-0.23.22-1.amzn2.0.1.x86_64.rpm              | 130 kB  00:00:00     
(6/6): tzdata-2020d-2.amzn2.noarch.rpm                           | 481 kB  00:00:00     
----------------------------------------------------------------------------------------
合計                                                        10 MB/s | 2.4 MB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  更新します              : p11-kit-0.23.22-1.amzn2.0.1.x86_64                     1/11 
  インストール中          : nettle-2.7.1-8.amzn2.0.2.x86_64                        2/11 
  更新します              : chrony-3.5.1-1.amzn2.0.1.x86_64                        3/11 
  更新します              : p11-kit-trust-0.23.22-1.amzn2.0.1.x86_64               4/11 
  更新します              : tzdata-2020d-2.amzn2.noarch                            5/11 
  更新します              : cloud-init-19.3-4.amzn2.noarch                         6/11 
  整理中                  : p11-kit-trust-0.23.21-2.amzn2.0.1.x86_64               7/11 
  整理中                  : tzdata-2020a-1.amzn2.noarch                            8/11 
  整理中                  : cloud-init-19.3-3.amzn2.noarch                         9/11 
  整理中                  : p11-kit-0.23.21-2.amzn2.0.1.x86_64                    10/11 
  整理中                  : chrony-3.2-1.amzn2.0.5.x86_64                         11/11 
  検証中                  : p11-kit-trust-0.23.22-1.amzn2.0.1.x86_64               1/11 
  検証中                  : nettle-2.7.1-8.amzn2.0.2.x86_64                        2/11 
  検証中                  : p11-kit-0.23.22-1.amzn2.0.1.x86_64                     3/11 
  検証中                  : cloud-init-19.3-4.amzn2.noarch                         4/11 
  検証中                  : tzdata-2020d-2.amzn2.noarch                            5/11 
  検証中                  : chrony-3.5.1-1.amzn2.0.1.x86_64                        6/11 
  検証中                  : tzdata-2020a-1.amzn2.noarch                            7/11 
  検証中                  : p11-kit-trust-0.23.21-2.amzn2.0.1.x86_64               8/11 
  検証中                  : p11-kit-0.23.21-2.amzn2.0.1.x86_64                     9/11 
  検証中                  : chrony-3.2-1.amzn2.0.5.x86_64                         10/11 
  検証中                  : cloud-init-19.3-3.amzn2.noarch                        11/11 

依存性関連をインストールしました:
  nettle.x86_64 0:2.7.1-8.amzn2.0.2                                                     

更新:
  chrony.x86_64 0:3.5.1-1.amzn2.0.1       cloud-init.noarch 0:19.3-4.amzn2             
  p11-kit.x86_64 0:0.23.22-1.amzn2.0.1    p11-kit-trust.x86_64 0:0.23.22-1.amzn2.0.1   
  tzdata.noarch 0:2020d-2.amzn2          

完了しました!
```

コレでSSHでEC2サーバーへの接続は完了です。試しに `ls -a`コマンドを実行してみると、最小限のファイルだけあることが確認できました。

```
[ec2-user@ip- ~]$ ls -a
.  ..  .bash_logout  .bash_profile  .bashrc  .ssh
```

参考ページ：[AWS EC2上にPHPサイトを立ち上げて、独自ドメインでアクセスできるようにするまでの全手順](https://qiita.com/harufuji/items/4fcd8f991fab5ad3354a#%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%92%E4%BD%9C%E3%82%8B)