서두 부터 결론적으로 말하자면 해당 키페어를 분실하면, 그 키페어를 다시 복구하는 방법은 없다.
따라서 키페어를 분실하여 ssh 접속을 못하는 인스턴스에 등록된 키페어를 다른 것으로 교체해서 다시 접속하게 해주는 방법으로 복구해야 한다.
키페어를 복구하는 두가지 방법을 소개 해본다.
Key-pair 란? 클라우드 서버에 접속하기 위한 암호화 파일로, aws 인스턴스는 퍼블릭 키를 인스턴스에 저장하고, 사용자는 프라이빗 키를 저장한다. 그리고 확장자가 pem인 파일과 ppk인 파일로 접속하는 형태이다. key-pair는 공개키(Public Key)와 비공개키(Private Key)를 이야기하며, 여기서 Public Key가 pem파일, Private Key가 ppk파일이 된다. 키 페어 파일에는 다음 텍스트가 포함된다. 웹 https의 ssl 통신에서 배운 공개키 방식을 그대로 ec2 ssh에 쓰인다고 보면 된다.
1. 키페어 교체 방법
보통 인스턴스의 키에 대한 정보 (공개키) 는 EBS 볼륨에 들어있다.
따라서 EBS를 인스턴스로부터 연결 해제하고, 다른 인스턴스에 마운트 해서 Key를 복사해 키페어를 교체하는 방법을 말한다.
조금 생소해서 약간 복잡할 수 있는데, 전체적인 과정 맥락을 알아보면 다음과 같다.
키페어 잃어버린 인스턴스 A 를 중지하고, 인스턴스의 EBS 볼륨을 분리(detach)
내가 가지고 있는 키페어를 사용하는 인스턴스 B 에 EBS를 연결(attach)
인스턴스 B 터미널에 접속후 방금 붙인 EBS 볼륨을 마운트
현재 인스턴스B의 공개키를 새로 붙인 EBS 볼륨에 복사하고 마운트 해제
이제 EBS 볼륨을 분리하고 다시 인스턴스 A에 연결
키페어 교체 완료 (교체된 키페어로 접속)
1. 인스턴스 중지하고 볼륨 분리 (방명록앱서버v3 ← 잃어버린 키페어 인스턴스)
2. 키페어를 갖고있는 인스턴스에 EBS 볼륨 연결 (bastion 인스턴스에 연결)
기존 인스턴스를 사용해도 되고, 아예 새로 EC2 인스턴스를 생성해 키페어를 등록하고 만들어진 인스턴스에 연결하는 방식으로도 해도 된다.
3. 새로 붙인 EBS 볼륨을 마운트
디바이스를 /dev/sdf 이름으로 볼륨을 연결했다면,xvdf1이라고 정보가 터미널에 뜰 것이다.
$ lsblk
$ sudo mount -o nouuid /dev/xvdf1 /mnt # xvdf1를 마운트