안녕하세요? 누리클라우드입니다.
AWS 클라우드에서 시스템을 운영 중에 간혹 EC2 인스턴스의 터미널 접속에 필요한 키 페어를 분실하여 곤란해 하시는 분들을 접하게 되는데요, 이번 글에서는 키 페어의 개인키를 분실했을 때 새로운 키 페어로 교체하는 방법을 소개해 드리겠습니다.
2018년 9월 이후로 키페어 없이 EC2 접속이 가능해졌습니다! 이 글의 맨 아래 “추가글“을 바로 참조해 주시기 바랍니다~
1.새로운 키 페어를 생성합니다.
먼저, 새로 사용할 키페어를 아래 경로에서 생성합니다.
EC2 대시보드 -> 네트워크 및 보안 -> 키 페어 -> 키 페어 생성
2. 분실한 키를 교체할 새로운 이름으로 키 페어를 만듭니다.
개인키는 키 페어를 생성한 직 후 단 한 번만 다운로드 할 수 있으니 잘 보관하시기 바랍니다.
3. 복구작업에 사용할 임시 EC2 인스턴스를 생성합니다.
주의: 인스턴스는 대상 인스턴스와 동일한 가용영역에 생성하여야 복구대상의 볼륨을 연결할 수 있습니다.
임시 인스턴스는 위에서 만든 새 키 페어로 생성합니다.
4. 복구대상 인스턴스를 정지하고 ROOT 볼륨을 분리합니다.
볼륨 메뉴에서 해당 볼륨을 복구 대상 인스턴스로부터 분리합니다.
5. 복구대상 인스턴스에서 분리한 ROOT 볼륨을 선택 후 임시 인스턴스에 연결 합니다.
6. 임시 인스턴스에 터미널 접속 후, 위에서 연결한 복구대상의 ROOT 볼륨을 마운트합니다.
볼륨 확인:
임시 폴더에 ROOT 볼륨 마운트:
# mount -o nouuid /dev/xvdb2 /mnt
* 혹시, 복구대상 ROOT 볼륨으로 부팅이 되버리는 경우는 잘못된 볼륨에서 부팅 을 참고하여 주시기 바랍니다.
7. 복구대상 ROOT 볼륨에 있는 공개키 파일의 내용을 새 공개키 파일의 내용으로 수정 후 마운트 해제합니다.
# cat /home/ec2-user/.ssh/authorized_keys > /mnt/home/ec2-user/.ssh/authorized_keys
* 공개키 파일 경로는 OS에 따라 다를 수 있습니다.
# umount /mnt
8. 마운트 해제 후 임시 인스턴스를 정지합니다.
9. 임시 인스턴스에 연결하였던 복구대상 ROOT 볼륨을 분리 후 원래의 복구대상 인스턴스에 다시 연결합니다.
다시 연결할 때는 ROOT 볼륨의 장치 이름을 원래 이름인 /dev/sda 또는 /dev/sda1 로 지정해 주어야 합니다.
10. 복구대상 인스턴스를 시작 후 교체한 새 키로 접속이 되는지 확인합니다.
맺음말
이상으로 키 분실로 인해 발생하는 인스턴스 접속 문제를 해결하기 위해 키 페어를 교체하는 방법에 대해 소개 드렸습니다. 무엇보다 중요한 것은 키에 대한 철저한 보관 및 관리를 통해 이런 상황을 겪지 않아야겠지만 혹시 발생하였을 경우에 도움이 될수 있기를 바랍니다.
* 2023/6월 Amazon EC2 Instance Connect Endpoint가 출시되어 개인키와 공인IP 없는 EC2 뿐만 아니라 RDS 접근까지 가능해 졌습니다. 이 방법은 [AWS] 공인IP 없이 SSH접속 방법 – EC2 인스턴스 커넥트 엔드포인트 사용을 참고하여 주시기 바랍니다.
* 2020/5/4일 Amazon EC2 Instance Connect가 출시되어 개인키 없이 웹쉘로 인스턴스 접근이 가능해 졌습니다. 이 방법은 EC2 Instance Connect를 사용하여 Linux 인스턴스에 연결을 참고하여 주시기 바랍니다.
* 2018/9/11일 AWS Systems Manager 세션관리자가 출시되어 개인키 없이 웹쉘로 인스턴스 접근이 가능해 졌습니다. 이 방법은 Systems Manager의 세션 관리자로 분실한 EC2 키페어 간편 복구하기를 참고하여 주시기 바랍니다.