前回までの記事
はじめて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の確認
- EC2を開く
- 実行中のインスタスを開く
3. 下記写真の右下に、『 Elastic IP: 』と記載されているのでコピー
これでログイン完了です👍
お疲れ様でした!!!
エラーが出る場合は、下記を確認ください。
エラーが表示された場合
エラー「-bash: shh: command not found」が表示された場合
Elastic IPの「●●.●●●.●●●.●●●*」の最後のアスタリスクは不要
下記写真の右下に、『 Elastic IP: 』と記載されているので、ここでコピーしましょう!
エラー「WARNING: UNPROTECTED PRIVATE KEY FILE!」 の場合
答え2: pemキーがchmodでパーミッションされていません。
>操作手順を上に戻って、chmodコマンドでパーミッションを実施してください。
エラー「Warning: Identity file : No such file or directory.Permission denied (publickey).」
答え: 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の環境構築)