EC2 Instance Connectを使ってブラウザからSSH接続する

2021年8月14日

Amazon EC2

EC2 インスタンスにブラウザから SSH 接続をする方法のひとつとして EC2 Instance Connect という機能があります。普段、私は手元の PC のターミナルから EC2 インスタンスに SSH 接続をしていますが、ブラウザから SSH 接続ができると外出時などに便利なので、EC2 Instance Connect を利用した接続について調べました。対象 OS や利用方法など紹介します。

目次

  1. 前提条件を確認する
  2. EC2 Instance Connect サービスからの SSH トラフィックを許可する
  3. EC2 Instance Connect を使用してブラウザから接続
  4. セッションマネージャーによる接続との違いは?

前提条件を確認する

ブラウザから EC2 Instance Connect で SSH 接続する際の前提条件は以下の通りです。

  • Amazon Linux 2 (すべてのバージョン)
  • Ubuntu 16.04 以降
  • インスタンスにパブリック IPv4 アドレスが設定されていること
  • EC2 Instance Connect サービスからのインバウンド SSH トラフィックをインスタンスで許可すること

詳細は EC2 Instance Connect を使用して接続 - Amazon Elastic Compute CloudEC2 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 Instance Connect

手順は以下の通り。EC2 インスタンスの詳細画面から接続ができます。

  1. EC2 インスタンスの詳細画面に移動します
  2. 詳細画面の上のほうで「接続」をクリックします。
  3. インスタンスに接続の画面で、EC2 Instance Connect のタブを選択します。
  4. 「接続」ボタンをクリックをすると 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 接続ができます。

セッションマネージャーの利用も視野にいれつつ、状況に応じて使い分けましょう。

-技術ブログ
-