EC2 Instance ConnectでのブラウザベースのSSH接続

課題~ターミナルソフトが使えない状態でのインスタンス接続~

あるPCにターミナルソフトが何も入っておらず、インストール、ダウンロードもしてはいけない。
そんな極限状態でサーバにログインする必要性に迫られた。
無茶だろ!と思ったが、EC2 Instance ConnectならAWSマネジメントコンソールからSSH接続ができるのだ!
ただし、Amazon Linux 2 (すべてのバージョン),Ubuntu 16.04 以降に限るが・・・。
一応覚えておいて損はないと思い、しっかり調べてみた。

制約事項
・Amazon Linux 2 (すべてのバージョン),Ubuntu 16.04 以降
・インスタンスにパブリック IPv4 アドレスが必要
・IPv6 アドレスを使用した接続はサポートしていない
・Safari ブラウザはサポートされていない

前提条件
・インスタンスに Instance Connect をインストールする ※Amazon Linux 2 2.0.20190618 以降であれば不要作業
・ローカルコンピュータに SSH クライアントをインストールする ※ほぼ不要作業

参考:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-instance-connect-methods.html

作業記録

AmazonLinux2でインスタンスを新規作成

特筆すべきことはありません。

EIPの割り当て、関連付け

IPv4 アドレスが必要なので、EIPを関連付けするなりしてください。自動割り当てパブリック IPを有効にしてある場合は必須ではありません。

ポート開放

EC2_INSTANCE_CONNECT用に22ポートを開けてください。
アドレス範囲は下記サイトで確認できます。東京リージョンであれば「3.112.23.0/29」です。※2020年9月29日時点
https://ip-ranges.amazonaws.com/ip-ranges.json

ip_prefix	"3.112.23.0/29"
region	"ap-northeast-1"
service	"EC2_INSTANCE_CONNECT"
network_border_group	"ap-northeast-1"

IAMユーザにアクセス許可を付与

わたしはAWSマネジメントコンソールにルートアカウントでログインしちゃってる(本当はよくない)のでこの作業はやっていません。
必要であれば下記サイトに従い、IAMユーザにアクセス付与。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-instance-connect-set-up.html#ec2-instance-connect-configure-IAM-role

EC2 Instance Connectのインストール

Amazon Linux 2 2.0.20190618 より前のAmazon Linux 2であればインストールが必要なのですが、今回はそもそもターミナルソフトではログインできないという条件なので・・・。

接続

あとはAWSマネジメントコンソールのEC2画面から対象インスタンスをチェック、”接続”をクリックして”EC2 Instance Connect”→”接続”とやるだけです。
そうすればブラウザ上に見慣れた黒い画面が出てきます。

その他のEC2 Instance Connectのメリットについては下記サイトをご覧ください。
https://aws.amazon.com/jp/about-aws/whats-new/2019/06/introducing-amazon-ec2-instance-connect/

うーん、AmazonLinux2(とUbuntu)のみ対応か・・・。
セッションマネージャーを使え、ということなのだろうか。