###Instance Connectのブラウザベースの接続
普段は自分のPCからsshでEC2のinstanceにログインしていましたが、
Instance Connectのブラウザベース接続というものがあると知りました。
これを使うとインターネット環境があればどこでも自由にEC2のinstanceへログインできるそうです。
そこで以下を参考にして、Instance Connectのブラウザベースで接続を試みました。
EC2 Instance Connect のセットアップ
ローカルPCからはsshでC2にログインできるのに、
Instance Connectのブラウザベースでは接続が失敗しました。
###試行錯誤した結果、この場合の確認ポイントは以下の3点でした。
####1.セキュリティグループのインバウンドの設定
対象のEC2インスタンスのセキュリティグループのインバウンドの設定に以下を追加する必要があります。
タイプ:ssh
プロトコル:TCP
ポート範囲:22
ソース:カスタム 3.112.23.0/29
####2.IAM(ユーザ)の設定
consoleにloginするIAM(ユーザ)に、以下のポリシーをアタッチします。
設定項目と設定値
Region:ap-northeast-1
AWS accountID:000000000000
InstanceID:i-99999999999999999
Osuser:ubuntu(AmazonLinux2のデフォルトのユーザー名はec2-user、Ubuntuの場合はubuntu)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2-instance-connect:SendSSHPublicKey",
"Resource": "arn:aws:ec2:ap-northeast-1:000000000000:instance/i-99999999999999999",
"Condition": {
"StringEquals": {
"ec2:osuser": "ubuntu"
}
}
},
{
"Effect": "Allow",
"Action": "ec2:DescribeInstances",
"Resource": "*"
}
]
}
####3.instance側の設定
対象のinstanceにsshでログインして、以下を実行します。
sudo apt-get update
sudo apt-get install ec2-instance-connect
4つの新しいファイルが作成されていることを確認します。
$ ls /usr/share/ec2-instance-connect/
eic_curl_authorized_keys
eic_harvest_hostkeys
eic_parse_authorized_keys
eic_run_authorized_keys
これでブラウザベースのInstance Connectができるはずです!!
####これでも解決しない場合
なお、ここまでやっても接続できない場合、
以下のように許可の範囲を一時的に広げて確認してみましょう。
- セキュリティグループのインバウンドのIPの範囲を「0.0.0.0/0」まで広げてみる
- consoleにloginするuserのIAMにAmazonEC2FullAccessのポリシーをアタッチしてみる
EC2 Instance Connectはインターネットが繋がれば、どこからでもEC2のinstanceにログインできるため、事前に準備してログインできるようにしておくと何かあった時に役立つと思います。
参考
AWS IP Address Ranges
EC2 Instance Connect の特徴や注意点についてまとめてみる