背景

EC2からAMIを取得してそのAMIで起動したEC2インスタンスにアクセスしようとしたらできない

AMIを取得していたEC2は作業ユーザーを作成してその作業ユーザー以外はEC2にアクセスできない状態にしていた

復元したインスタンスに対して作業ユーザーにアクセスしようとしたら権限不足でアクセスができない

アクセス権限を変更するためにec2-userにアクセスしようとしたけど作業ユーザー以外はアクセスできない設定にしているので作業ユーザーの権限を変更できない

このような状況になっていたのでAMIからEC2インスタンスを作成することは諦めかけていました。

そんな時にEC2 Instance Connectの存在を知り、アクセスして作業できるようになったというのがこのブログの発端です

EC2 Instance Connectとは

・アクセス鍵をなくした

・作業ユーザーを間違えて消してしまった

・作業ユーザーの権限がなくてインスタンスにアクセスできない

こういった状況の際に一時的にSSH接続ができるサービスです

 

接続までの流れ

対象インスタンスに接続するリージョンのEC2 Instance Connect サービスのIPアドレスレンジからのSSH接続のインバウンドルールの許可

コンソール上でEC2 Instance Connectの画面にて、接続をクリック

接続をクリックするとAWSから60秒間だけ有効な一時的なSSHキーペアを生成

生成された公開鍵を対象のEC2インスタンスのOSに送信し、ec2-instance-connectというエージェントがその鍵をインスタンスに登録する

CloudShellが開かれ、一時的に作成された秘密鍵を使ってEC2インスタンスにSSH接続する

 

CloudShellを閉じるか、60秒が経過するとEC2に送信された一時的な公開鍵は自動的に削除される

実行したコマンド

・ ログインシェルを元に戻す

sudo usermod -s /bin/bash ec2-user

・PCのターミナルで実行。公開鍵の生成とコピー

ssh-keygen -y -f “[秘密鍵ファイルのパス]”

・sshディレクトリの作成

mkdir -p /home/ec2-user/.ssh

・公開鍵の上書き

echo”コピーした公開鍵” > /home/ec2-user/.ssh/authorized_keys

・所有者をec2-userに変更

chown -R ec2-user:ec2-user /home/ec2-user/.ssh

・ディレクトリの権限を700に設定

chmod 700 /home/ec2-user/.ssh

 authorized_keysファイルの権限を600に設定

chmod 600 /home/ec2-user/.ssh/authorized_keys

まとめ

最終的にこれまでの手順でEC2にアクセスすることができ、設定を変更することができました。

自分と同じ状況でEC2にアクセスできなくて困っている方がいれば参考にして頂けると嬉しいです