独学ではじめてAWSのEC2にデプロイする方法④（EC2インスンタンスにSSHログイン）

## 前回までの記事
[はじめてAWSでデプロイする方法①（インスタンスの作成）](https://qiita.com/nousi/items/f0ab345402362e43db80)
[はじめてAWSでデプロイする方法②（Elastic IPの作成と紐付け）](https://qiita.com/nousi/items/0fe964f0be7e1cfa2ca1)
[はじめてAWSでデプロイする方法③（AWSセキュリティグループの設定）](https://qiita.com/nousi/items/cd2d937e9faf0c0c669c)

EC2インスタンス（サーバー）を作成し、パブリックIPをElastic IPで固定。
一般ユーザーがアクセスできるように、セキュリティグループの設定を追加（入り口を作成）
ざっくり説明すると、こんなところです。

## 今回実施すること
今回はEC2上にRailsやMySQLなどをインストールする、つまり環境構築をするために、SSH接続でEC2にログインをしていきます。
EC２にログインするにはどうすればいいのか？

IDとPWが必要です。
ID　＝　Elastic IP（パブリックIP）
PW　＝　pemキー（EC2インスタンス作成時にダウンロードしたファイル）

上記2点を利用して、ログインしていきますが、その方法を解説していきます

# EC2インスタンスにログインする
ここからは、実際にログインする説明をしていきます。

### 始める前の前提条件
EC2インスタンスを作成すると、ec2-userというユーザーと対応するSSH秘密鍵が生成されます。
このアカウントは管理者権限が強いので、本来であればこのec2-userではなく、権限を小さいアカウント使って運用します。

まずは基本を掴むために、このec2-userを使って作業を進めていきます。



## 保存しておいた（ファイル名.pem）のアクセス権限の制限
SSH接続でログインをするために、暗号化キーである,ファイル名.pemを保護したいと思います。

pemキー（ファイル名.pem）は,
[はじめてAWSでデプロイする方法①（インスタンスの作成）](https://qiita.com/nousi/items/f0ab345402362e43db80)でインスタンス作成時にダウンロードしたファイルです

このファイルに秘密鍵が記載されるので、不正利用されないように、アクセス制限をかけます。
このファイルは、、他者に閲覧されないように制限をかけることが目的です。このファイルやディレクトリのアクセス権の設定することをパーミッション（許諾）と呼びます。

パーミッション（ファイルのアクセス制限）をするには、　$ chmod コマンドを利用します。　






### 手順

```
$ cd ~/.ssh

$ ls
# pemファイルが存在するか確認しましょう
# ない場合は、『はじめてAWSでデプロイする方法①（インスタンスの作成）』を振り返ってください

$ chmod 600 ダウンロードした鍵の名前.pem
```
### この$ chmod 600の解説をしたいと思います。

まず、chmodはアクセス制限をかけるパーミッションを設定するためのコマンドとお伝えしました。600は『　誰に　』どんな権限を与えるのか設定しています。
### 誰に？は下記になります。
 - 100桁は『所有者の権限設定』
 - 10桁は『グループの権限設定』
 - １桁は『その他のユーザーの権限設定』

```
$ chmod 600の場合
6 = 『所有者の権限設定』
0 = 『グループの権限設定』
0 = 『その他のユーザーの権限設定』
```


### 『　どんな権限を与えるのか？　』は下記になります

| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|:--|:--|:--|:--|:--|:--|:--|:--|
| --- | --x | -w- | -wx | r-- | r-x | rw- | rwx |

r = read = 読む（閲覧）権限
w = write = 書く（入力、編集）権限
x = 実行する権限

6 はrw 読み書きの権限を与えます。
0は一切の権限がありません。

```
$ chmod 600の場合
 『所有者の権限設定』 = 6 = rw- = 読み書き
 『グループの権限設定』 = 0 = --- = 権限なし
 『その他のユーザーの権限設定』 = 0 = --- = 権限なし
```



### もう一度見てみましょう

```
$chmod 600 webapp.pem　

webapp.pemは、
『所有者権限』 6 = rw = 読み書きが可能
『グループ権限』 0 = 権限なし
『他ユーザの権限』 0 = 権限なし

#注意：この操作をしていないと、sshでログインができません。
（xの実行を入れていないのは、ファイル名.pemが何かのプログラムを実行するファイルではないため。700でも可能）
```


詳細については、下記の記事を参考にしてください
[Macターミナルコマンド「chmod」の使い方](https://do-zan.com/mac-terminal-chmod/)
[参考：chmod コマンド](https://qiita.com/ntkgcj/items/6450e25c5564ccaa1b95)


ファイル名.pemに制限をかけたところで、安心してログインしていきましょう！

## SSH接続による、ログイン
pemキーの制限をかけたところで、ログインを実際にしていきます。

```
$ cd ~/.ssh
# .sshディレクトリに移行
.ssh $ ls
# .sshディレクトリに無事にpemキーが入っているのか確認

.ssh $ ssh -i ファイル名.pem ec2-user@Elastic IP（EC2インスタンスと紐付けた）
#例
 # 条件：　『　pemキー = webapp.pem　』、　『　Elastic IP = 123.456.789　』　であれば
 # 実行コマンド：　ssh -i webapp.pem ec2-user@123.456.789
 # pemキーはlsコマンドで、ファイルの一覧が表示されるので、そこからコピーしましょう

```
#### Elastic IPの確認
1. [EC2を開く](https://ap-northeast-1.console.aws.amazon.com/ec2)
2. 実行中のインスタスを開く

![スクリーンショット 2020-01-11 19.29.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/c67648b5-16a6-6776-4fd9-e124d8690de8.png)
3. 下記写真の右下に、『　Elastic IP:　』と記載されているのでコピー
![スクリーンショット 2020-01-11 19.21.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/dd37a4f2-798a-872a-5b97-d24f71c8a72f.png)


無事にログインが成功されるとEC2の表示が出る
![スクリーンショット 2020-01-11 19.40.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/203b7fb6-2ea6-4401-7f3f-dc0dd5806e9d.png)


これでログイン完了です👍
お疲れ様でした！！！



エラーが出る場合は、下記を確認ください。

# エラーが表示された場合
## エラー「-bash: shh: command not found」が表示された場合

![スクリーンショット 2020-01-11 19.16.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/a137de0e-b017-71ac-6653-607454d4f114.png)

答え１：Elastic IPの「＊」は不要
![スクリーンショット 2020-01-11 19.19.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/3b6c4b96-e30c-d1ca-e421-f3ea104f5b3c.png)

Elastic IPの「●●.●●●.●●●.●●●＊」の最後のアスタリスクは不要
下記写真の右下に、『　Elastic IP:　』と記載されているので、ここでコピーしましょう！
![スクリーンショット 2020-01-11 19.21.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/dd37a4f2-798a-872a-5b97-d24f71c8a72f.png)


## エラー「WARNING: UNPROTECTED PRIVATE KEY FILE!」 の場合
![スクリーンショット 2020-01-11 19.34.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/abb533af-535f-9108-7bc7-af81d169193c.png)

答え2：　pemキーがchmodでパーミッションされていません。
＞操作手順を上に戻って、chmodコマンドでパーミッションを実施してください。


## エラー「Warning: Identity file : No such file or directory.Permission denied (publickey).」
下記は重要な箇所は虫食い状態にしています。
![スクリーンショット 2020-01-11 19.45.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/362db728-ccec-a7d5-02a3-6cf0bda5b9fc.png)

答え:　sshコマンドを実施する場所が間違っている
＞sshディレクトリ上で実施する必要があるが、sshディレクトリをターミナルで開いていない。

```
$cd ~/.ssh
.ssh $ ssh -i ファイル名.pem ec2-user@Elastic IP（EC2インスタンスと紐付けた）
#例
 # 条件：　『　pemキー = webapp.pem　』、　『　Elastic IP = 123.456.789　』　であれば
 # 実行コマンド：　$ shh -i webapp.pem ec2-user@123.456.789
 # pemキーはlsコマンドで、ファイルの一覧が表示されるので、そこからコピーしましょう
```


## 次回はログイン後の環境構築を実施していきましょう！
ここまで、お疲れ様でした
ログインできた達成感を味わっていただけましたか？

次回は、EC2にログイン後の操作（環境構築）をしていきたいと思います

### この記事が最高だったと思う方は、『　フォロー　』と　『　いいね！　』をしてください👍


次回の記事はこちら
[はじめてAWSでデプロイする方法⑤（EC2の環境構築）](https://qiita.com/mylevel/items/f4e44f5f88cca6fdbcff)