背景
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にアクセスできなくて困っている方がいれば参考にして頂けると嬉しいです