LoginSignup
24
13

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-01-11

前回までの記事

はじめてAWSでデプロイする方法①(インスタンスの作成)
はじめてAWSでデプロイする方法②(Elastic IPの作成と紐付け)
はじめてAWSでデプロイする方法③(AWSセキュリティグループの設定)

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

今回実施すること

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

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でデプロイする方法①(インスタンスの作成)でインスタンス作成時にダウンロードしたファイルです

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

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

手順

$ cd ~/.ssh

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

$ chmod 600 ダウンロードした鍵の名前.pem

この$ chmod 600の解説をしたいと思います。

まず、chmodはアクセス制限をかけるパーミッションを設定するためのコマンドとお伝えしました。600は『 誰に 』どんな権限を与えるのか設定しています。

誰に?は下記になります。

  • 100桁は『所有者の権限設定』
  • 10桁は『グループの権限設定』
  • 1桁は『その他のユーザーの権限設定』
$ 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」の使い方
参考:chmod コマンド

ファイル名.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を開く
  2. 実行中のインスタスを開く

スクリーンショット 2020-01-11 19.29.54.png
3. 下記写真の右下に、『 Elastic IP: 』と記載されているのでコピー
スクリーンショット 2020-01-11 19.21.03.png

無事にログインが成功されるとEC2の表示が出る
スクリーンショット 2020-01-11 19.40.24.png

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

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

エラーが表示された場合

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

スクリーンショット 2020-01-11 19.16.06.png

答え1:Elastic IPの「*」は不要
スクリーンショット 2020-01-11 19.19.05.png

Elastic IPの「●●.●●●.●●●.●●●*」の最後のアスタリスクは不要
下記写真の右下に、『 Elastic IP: 』と記載されているので、ここでコピーしましょう!
スクリーンショット 2020-01-11 19.21.03.png

エラー「WARNING: UNPROTECTED PRIVATE KEY FILE!」 の場合

スクリーンショット 2020-01-11 19.34.41.png

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

エラー「Warning: Identity file : No such file or directory.Permission denied (publickey).」

下記は重要な箇所は虫食い状態にしています。
スクリーンショット 2020-01-11 19.45.49.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の環境構築)

24
13
1

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
24
13