EC2インスタンス(Linux)にマネージメントコンソールからSSH接続する方法TOP3

記事タイトルとURLをコピーする

EC2インスタンスで起動したLinuxへウェブブラウザでマネージメントコンソール経由でSSHする方法がいくつかあります。TOP3と言っておきながら2021/08現在では3つしかないのですが、今回はそれぞれの利用シーン・制限/制約について簡単に整理したいと思います。個別の具体的な手順については別のブログで。

第1位 AWS Systems Manager Session Manager

docs.aws.amazon.com

多くの場合でSessin Mnagerが便利でしょう。IAMユーザーを利用して接続するユーザーを管理でき、実行したコマンドはS3へログとして保存されます。SSMにはVPCエンドポイントも用意されているので、プライベートなサブネットに配置したEC2でも利用できます。もしいま踏み台インスタンスを運用しているなら、Sessin Mnagerに寄せることでこれをなくすことができます。

Sessin Mnagerの利用にはSSMエージェントをインストールし、EC2インスタンスのIAMロールにSSMを利用するためのIAMポリシーを付与する必要があります。SSMエージェントはメジャーなLinuxディストリビューションにはほとんど対応しています。Amazon Linux 2とUbuntu(16.04以降)のAMIには事前にインストールされているためすぐに利用が可能です。

第2位 EC2 Instance Connect

docs.aws.amazon.com

対象のEC2インスタンスにパブリックIPが振られているなら、マネージメントコンソールからEC2 Instance Connectを利用した接続も可能です。接続リクエストはCloudTrailに履歴として残ります。事前にEC2インスタンスにEC2 Instance Connectをインストールする必要があり、EC2 Instance ConnectがサポートしているディストリビューションはAmazon Linux 2とUbuntu(16.04以降)のみです。直近のAmazon Linux 2とUbuntu 20.04のAMIにはプリインストールされているようです。

プライベートなネットワークにあるEC2インスタンスへ接続する場合は、ブラウザではなくなりますがEC2 Instance Connect CLIかSSHクライアントを使用できます。こちらの方法では公開鍵・秘密鍵を用意する必要があります。

第3位 EC2 シリアルコンソール

docs.aws.amazon.com

SSHではないですが、実はEC2インスタンスはシリアルポートへのアクセスが利用できます。これはトラブルシュートで利用するのに向いた機能です。OS側のネットワークか何かの設定でSSH接続できなくなってしまったようなときに利用します。ネットワーク周りの設定によらず接続できるのは便利です。ログインはパスワード認証となるため、事前にOSユーザにパスワードの設定をしておく必要があります。ちなみにEC2 シリアルコンソールはウェブブラウザ以外ならSSHクライアントIを利用しても接続が可能です。この方法でも公開鍵・秘密鍵が必要です。

番外編

前述したとおりいくつかの方法ではプライベートなネットワークにあるインスタンスでもシェル, CLIからもアクセスできます。つまりAWSマネージメントコンソールからシェルを触れるAWSサービスであればSSHできます。もちろんもろもろの設定や準備は必要です。ひょっとするとCloudShellからプライベートなインスタンスにもアクセスできる??この検証はまた別のブログで。。。

まとめ

いかがでしたでしょうか??EC2 Instance Connectがどういう位置づけなのかいまいち理解できませんが、このようにいくつかの方法でマネージメントコンソールからSSHもしくはシリアルポートでアクセスすることができます。利用用途にあった方法を選びましょう

方法 利用シーン
AWS Systems Manager Session Manager だいたいコレ
EC2 Instance Connect ???
EC2 シリアルコンソール トラブルシューティング

Yusuke Mine(書いた記事を見る)

I get drunk but it's not enough 'Cause the morning comes and you're not my baby.