EC2を起動したのち、Teratermで接続するの面倒だなあと思っていたら、現在は下記の4種の方法で接続できるとのこと。
- SSHクライアント
- セッションマネージャー
- EC2 Instance Connect
- EC2 シリアルコンソール
せっかくなので、全部試してみた結果をまとめました。
動作環境
- AMI:amzn2-ami-minimal-hvm-2.0.20230207.0-x86_64-ebs(ami-07a9088aa34ad4545)
- インスタンスタイプ:t3.nano
- AWSマネジメントコンソールには、Administrator権限でログイン
Amazon Linux 2のminimalイメージを使用します。(=通常のAmazon Linux2には入っていないものが多々あります)また、EC2 シリアルコンソール利用時にAWS Nitro System に対応しているインスタンスタイプを選択する必要があるため、t3.nanoを選択しています。
SSHクライアント
まずは、Teraterm等のコンソールでSSH接続します。
注意点は、セキュリティグループでアクセス元のIPからの通信を許可するくらいです。
セッションマネージャー
さて、ここからが本題です。次はセッションマネージャーでログインを試みます。マネジメントコンソールより、セッションマネージャーで接続しようと下記のエラーが出ますので、解決していきます。
まず、minimalイメージを使用する都合上、SSMエージェントは入っていませんので、 SSM エージェント をインストールします。(参考)systemctl
で確認して、起動していなければ起動しておきます。
sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
sudo systemctl status amazon-ssm-agent
次に、インスタンスにAmazonSSMManagedInstanceCore
ポリシーを含むIAMロールをアタッチします。以下の画像は事前に作成してあるIAMロールをアタッチしています。
ここまで出来たら接続を試します。以下のような画面で表示されます。
EC2 Instance Connect
次はEC2 Instance Connectで接続を試みます。こちらもminimalイメージを使用する都合上、まずはEC2 Instance Connectをインストールします。
sudo yum install -y ec2-instance-connect
また、こちらのページに記載のあるIPアドレスからのSSHのインバウンドを許可しておきます。今回は面倒なので0.0.0.0/0
で指定してしまいました。
EC2 シリアルコンソール
最後にEC2 シリアルコンソールにて接続を試みます。接続自体はすぐにできるのですが、パスワードにてログインする必要があります、、、
そのため、下記記事を参考にrootアカウントにパスワードを設定します。
パスワードを設定したら、再度ログインを試みます。無事ログインに成功しました。
感想
TeraTermがなくても、多岐にわたる方法でログインできることがわかりました。EC2 Instance ConnectはSSH接続に近い考え方で、設定さえしてしまえば気軽に使えるので便利だと思います。シリアルコンソールは、事前に設定しておくことでSSHできなくなった時の回避策として使えそうです。