EC2 インスタンスにブラウザから SSH 接続をする方法のひとつとして EC2 Instance Connect という機能があります。普段、私は手元の PC のターミナルから EC2 インスタンスに SSH 接続をしていますが、ブラウザから SSH 接続ができると外出時などに便利なので、EC2 Instance Connect を利用した接続について調べました。対象 OS や利用方法など紹介します。
目次
- 前提条件を確認する
- EC2 Instance Connect サービスからの SSH トラフィックを許可する
- EC2 Instance Connect を使用してブラウザから接続
- セッションマネージャーによる接続との違いは?
前提条件を確認する
ブラウザから EC2 Instance Connect で SSH 接続する際の前提条件は以下の通りです。
- Amazon Linux 2 (すべてのバージョン)
- Ubuntu 16.04 以降
- インスタンスにパブリック IPv4 アドレスが設定されていること
- EC2 Instance Connect サービスからのインバウンド SSH トラフィックをインスタンスで許可すること
詳細は EC2 Instance Connect を使用して接続 - Amazon Elastic Compute Cloud や EC2 Instance Connect セットアップ - Amazon Elastic Compute Cloud を参照。
EC2 Instance Connect サービスからの SSH トラフィックを許可する
前提条件のうち一番下に書いてあるように、接続先の EC2 インスタンスのセキュリティグループで、EC2 Instance Connect サービスからの SSH トラフィックの IP アドレスを許可する必要があります。EC2 Instance Connect サービス の IP アドレスは サービスに発行された推奨される IP ブロック リンク先の json に記載されています。 service
のキーが EC2_INSTANCE_CONNECT
になっているオブジェクトで、対象のリージョンの IP アドレスを探します。
たとえば、東京リージョンの EC2 Instance Connect サービスの IP アドレスは以下のコマンドで調べられます。jq
コマンドが必要です。
curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | \
jq -r '.prefixes[] | select(.service == "EC2_INSTANCE_CONNECT" and .region == "ap-northeast-1")'
{
"ip_prefix": "3.112.23.0/29",
"region": "ap-northeast-1",
"service": "EC2_INSTANCE_CONNECT",
"network_border_group": "ap-northeast-1"
}
ip_prefix
キーに表示された IP アドレスの SSH トラフィックを EC2 インスタンスのセキュリティグループで許可します。
詳細は EC2 Instance Connect セットアップ - Amazon Elastic Compute Cloud を参照。
EC2 Instance Connect を使用してブラウザから接続
手順は以下の通り。EC2 インスタンスの詳細画面から接続ができます。
- EC2 インスタンスの詳細画面に移動します
- 詳細画面の上のほうで「接続」をクリックします。
- インスタンスに接続の画面で、EC2 Instance Connect のタブを選択します。
- 「接続」ボタンをクリックをすると SSH で接続ができます。
セッションマネージャーによる接続との違いは?
セッションマネージャーでもブラウザから EC2 インスタンスに接続することができます。
EC2 Instance Connect による接続はセッションマネージャーと比べて
- IAM Role の設定が不要
- SSM エージェントのインストールが不要
- パブリック IP アドレスが必要
- セキュリティグループの設定が必要
といった違いがあります。
セッションマネージャーが利用できる場合はそちらを利用した方が良いと思います。他にも様々な機能が使えます。また EC2 Instance Connect は、手元の macOS から文字列のコピーペーストができなかったので、利便性でも若干劣るかといった印象です。
私はセッションマネージャーが利用できない場合の次の手として EC2 Instance Connect を選択しています。
まとめ
OS が Amazon Linux 2 もしくは Ubuntu 16.04 以降で、パブリック IP アドレスを持っている場合、SSH のセキュリティグループを開けるだけでブラウザから手軽に SSH 接続ができます。
セッションマネージャーの利用も視野にいれつつ、状況に応じて使い分けましょう。