AWS の仮想サーバー EC2 に接続できないときの確認項目を解説します。
EC2 インスタンス、ネットワーク、SSH コマンド の3つの観点に分けてチェックしましょう。
EC2 インスタンスが正常に起動していない
EC2 インスタンスが異常となっている場合は接続できません。
AWS コンソールにログインし、該当サーバーの状態を確認します。
![AWS EC2 に SSH 接続できないときの確認項目](https://xn--o9j8h1c9hb5756dt0ua226amc1a.com/wp-content/uploads/2018/12/a106-01.png)
- 状態が running となっていること
- ステータスチェックが 2/2 となっていること
再起動しても解消しない場合は AWS サポートへ問い合わせましょう。
状態が stopped の場合はサーバーが起動していません。
インスタンスを右クリック → 開始 からサーバーを起動しましょう。
![AWS EC2 に SSH 接続できないときの確認項目](https://xn--o9j8h1c9hb5756dt0ua226amc1a.com/wp-content/uploads/2018/12/a106-02.png)
EC2 のセキュリティグループを確認する
EC2 には、セキュリティグループ と呼ばれる考え方があります。
ファイアウォールのような「接続許可設定」をイメージすれば OK です。
サーバーに SSH 接続するためには、セキュリティグループによる許可が必要です。
インスタンスを右クリック → ネットワーキング → セキュリティグループの変更 から設定します。
![AWS EC2 に SSH 接続できないときの確認項目](https://xn--o9j8h1c9hb5756dt0ua226amc1a.com/wp-content/uploads/2018/12/a106-03.png)
SSH 接続用のセキュリティグループが入っているかを確認しましょう。
セキュリティグループが存在しない場合は新規作成が必要です。
接続元の IP アドレスが許可されているか
セキュリティグループによって、接続できる IP アドレスが制限されています。
今使っている IP アドレスが許可されていなければ、EC2 に繋がりません。
EC2 への接続が許可されている IP アドレスを確認するためには、
インスタンスを選択した状態で、画面下の「インバウンドルールの表示」をクリックします。
![EC2に接続できない場合の対処、セキュリティグループのIPを確認する](https://xn--o9j8h1c9hb5756dt0ua226amc1a.com/wp-content/uploads/2018/12/ec2-ssh-security-group.png)
SSH のポート番号(標準は 22)のソース欄に、自分の IP アドレスがあるか確認しましょう。
今使っている IP アドレスは、確認くん などで調べられます。
SSH 接続できる IP アドレスを追加する
セキュリティグループで、自分の IP アドレスが許可されていない場合の対処法です。
初めに、対象の EC2 インスタンスに設定されているセキュリティグループ名をコピーします。
上記の画像例では、launch-wizard-13
がセキュリティグループ名です。
管理画面 を開いて、コピーしたセキュリティグループ名を検索しましょう
![EC2 のセキュリティグループを設定する](https://xn--o9j8h1c9hb5756dt0ua226amc1a.com/wp-content/uploads/2018/12/ec2-ssh-security-group-02.png)
インバウンド
タブの「編集」ボタンから変更が可能です。
SSH のポート番号(標準は 22)で、自分の IP アドレスからの接続を許可しましょう。
![EC2 へのアクセスを許可する設定](https://xn--o9j8h1c9hb5756dt0ua226amc1a.com/wp-content/uploads/2018/12/ec2-ssh-security-group-03.png)
今 AWS の管理画面を開いているインターネット回線から繋ぎたい場合は、
「マイIP」を選ぶと、自動的に現在の IP アドレスが入力されますのでご活用ください。
VPC のサブネット・インターネットゲートウェイを確認する
AWS のネットワークには、外部通信が行えないタイプも存在します。
EC2 インスタンスが、外部通信可能なネットワークに所属しているかを確認しましょう。
- EC2 管理画面を開いてインスタンスを選択する
- 画面下に表示される サブネット ID を控えておく
- VPC 管理画面を開いて左メニューから サブネット を選択する
- 先ほど控えた サブネット ID を検索する
- ルートテーブル タブを開く
この中に 0.0.0.0/0 : igw-xxxxxx
もしくは 0.0.0.0/0 : natgw-xxxxxx
のような設定があれば OK です。設定がない場合は、外部と通信できないネットワークになっています。
EC2 のパブリック IP アドレスを確認する
上記の項目を確認し、外部通信可能なネットワークであった場合は、
EC2 インスタンスの IP アドレスを確認しましょう。
EC2 管理画面にて「IPv4パブリック IP」の記載があれば OK です。
![AWS EC2 に SSH 接続できないときの確認項目](https://xn--o9j8h1c9hb5756dt0ua226amc1a.com/wp-content/uploads/2018/12/a106-06.png)
その場合は、パブリック IP アドレスを持つ別サーバー(※)上から SSH 接続します。
※踏み台サーバーなどと呼ばれます
SSH 接続用のキーペアを見直す
EC2 インスタンス作成時には、キーペア を指定しています。
作成時に指定したキーペアでないと接続できません。
EC2 管理画面を開き、指定されているキーペアを再確認しましょう。
![AWS EC2 に SSH 接続できないときの確認項目](https://xn--o9j8h1c9hb5756dt0ua226amc1a.com/wp-content/uploads/2018/12/a106-07.png)
同じ名前のキーペアファイル (xxxx.pem
) が手元に必要となります。
Linux から SSH コマンドで接続する場合は、キーペアファイルの権限も要チェックです。
ファイルのパーミッションが 600
(読み取り専用) となっている必要があります。
SSH の接続コマンドを見直す
SSH で接続する際のコマンドが誤っている可能性もあります。
以下の形式となっているか確認しましょう。
$ ssh <ユーザ名>@<サーバーのパブリック IP> -i <キーペアファイル>
- 接続するユーザ名が正しいこと
- EC2 インスタンスの IP アドレスが正しいこと
- キーペアファイルの場所が正しく指定されていること
- ポート番号を変更している場合は
-p
オプションで指定します
作成した OS によって、ユーザ名の初期値が異なります。
EC2 の OS | 初期ユーザ名 |
---|---|
Amazon Linux | ec2-user |
Ubuntu | ubuntu |
CentOS | centos |
EC2 インスタンスの接続トラブルまとめ
EC2 インスタンスに繋がらない・接続できない場合の対処を解説しました。
インスタンス、ネットワーク設定、SSH コマンド の3つに分けて調査することが重要です。
- EC2 インスタンスが正常に動作していること
- 外部から接続可能なネットワークになっているか
- SSH コマンドや使用するキーペアファイルが正しいか
【関連記事】
⇒ AWS EC2 インスタンスの特徴と選び方
⇒ EC2 インスタンス料金を節約するテクニック
⇒ Elastic IPアドレス (EIP) とは何か?
⇒ Fargate, ECS, EKS の違いを解説