끄적이는 보송

[AWS] EC2 인스턴스 키 파일 유실됐을 때 본문

STUDY/AWS

[AWS] EC2 인스턴스 키 파일 유실됐을 때

끄적이는 보송 2021. 6. 23. 17:57
반응형

EC2 인스턴스 키 파일이 분실되거나 혹은 키 파일 지정 없이 EC2 인스턴스를 생성하면... 접속할 방법이 정말 없을까 문득 생각이 들었다. 그래서 바로 해보았다.

 

OS 환경은 Amazon Linux 2 이며 키 분실 혹은 생성 시 미배정으로 접속하지 못하는 EC2 인스턴스의 루트 볼륨을 임시 EC2 인스턴스에 부착해 키를 배정하고 접속을 가능케 하고자 한다.

키 배정 없이 EC2 인스턴스가 생성되어 SSH 통신이 불가하다는 안내문.

 

 

 


EBS Root 볼륨을 옮기기 위한 사전 작업

EBS 볼륨 Detach 전에 서버 중지가 필요하다.

접속이 안되는 문제의 Temp Server다. Root EBS 볼륨을 떼어내기 전, Stop 해주자. 

 

Temp Server의 EBS 볼륨. 가용영역은 ap-northeast-2
임시 서버 Temp Server2 생성.
문제의 서버 Temp Server, 임시 서버 Temp Server2 의 EBS 볼륨

문제의 Temp Server는 서울 리전의 가용영역 ap-northeast-2c에 위치해 있다. 루트 볼륨 작업을 위한 임시 서버 Temp Server2 또한 같은 곳에 구축해주자. Temp Server와 Temp Server2의 EBS 볼륨 위치가 동일하다.

 

 

 


EBS Root 볼륨 Detach & Attach

떼어낸 Temp Server의 EBS 볼륨을 Temp Server 2에 Attach.
Temp Server 로부터 떼어낸 Root EBS Volume을 임시 서버 Temp Server 2에 Attach 한다. 콘솔상으로 두 EBS 볼륨이 Attached 된 것을 확인했다.

 

 


임시 서버 Temp Server2에 접속 및 EBS 볼륨 확인

임시 서버인 Temp Server 2에 접속
임시 서버인 Temp Server 2에 접속하여 EBS 볼륨이 부착되었는지 확인한다. fdisk -l

 

 

 


문제의 서버 Root EBS 볼륨 마운트 및 오류해결

마운트를 위한 경로 생성
마운드 시도, 하지만 에러 발생

mount: /mnt/mounttest: wrong fs type, bad option, bad superblock on /dev/xvdb1, missing codepage or helper program, or other error

 

 

볼륨을 마운트를 시도 했지만 다음과 같은 에러 메시지와 함께 문제가 발생한다. 원인이 뭘까... 내가 찾아낸 원인은 EC2 인스턴스에 Attach 된 EBS 볼륨의 UUID가 같아 생긴 것이다. 아마도 두 서버가 같은 AMI (Amazon Linux 2) 이어서 그런거 같은데 다른 AMI를 사용했으면 값만 달랐지 동일한 결과가 있었을 거라고 예상된다.

blkid 명령어로 확인한 두 EBS 볼륨의 UUID 값. 둘 다 동일하다.

UUID는 Universally unique identifier의 약자이며 Linux 운영체제에서 파티션을 고유하게 식별할 수 있는 값이다. 

 

 

 


동일 UUID 값으로 생긴 마운트 에러 문제 해결

[ec2-user ~]$ sudo mount -o nouuid /dev/xvdf1 /mnt/tempvol

아주 간단히 해결할 수 있다. 위 명령어로 같은 UUID 값을 가지고 있는 볼륨도 마운트 할 수 있다. 굳이 UUID 값을 변경하지 않고도 말이다. UUID 변경을 원한다면 파일 시스템에 따라 다르겠지만 ext 계열은 tune2fs 커맨드로, xfs 계열은 xfs_admin 커맨드로 변결할 수 있다. 그 외 다른 것도 있겠지만 기회가 된다면 나중에 공부하면서 다뤄볼 예정이다.

 

 

 


Mount 된 EBS 볼륨에 키 값 넣기

임시 서버 Temp Server 2의 키 값. 곧 문제의 Temp Server의  값이 될 녀석이다. 
키 값 복사

 

 

 


키 값 복사 후, Unmount

 

 

 


다시 EBS 볼륨을 Temp Server에 부착

Detach & Attach

 

 

 


서버 접속 성공!

접속 성공

문제의 Temp Server에 접속 성공하였다. Elastic Beanstalk는 가볍게 무시해주자. 이거 알아보려 했다가 엉뚱하게 꼳혀서이 글 쓴거니까;; 문제가 있어 접근하지 못한 EC2 인스턴스의 볼륨을 접근할 수 있는 다른 EC2 인스턴스에 임시로 연결하여 접근 및 해결한 것을 다뤄보았다. 참고로 키 값을 부여 했어도 콘솔상에는 해당 EC2 인스턴스 마우스 우 클릭 후, Connect를 클릭하면 여전히 SSH 통신이 오류가 될꺼라는 경고 메시지가 있고, Instance Details란에 Key Pair Name은 여전히 공백란이지만 서버는 정상적으로 접근 가능하다. 이유는 모르겠다. 아마존이 그냥 그런건가..

 

아마존 공식 문서에도 올라와있다. 이런 방법도 있을꺼 같아 해봤는데 실제로도 사용하는 방법인듯 하다.

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/replacing-lost-key-pair.html

 

잘못된 내용 지적과 조언은 언제나 달게 받겠습니다 :)

 

반응형
Comments