AWS EC2 인스턴스 접속할 때 사용하는 키-쌍 파일 (.pem)을 잃어버렸다면?

Soheon Lee·2020년 5월 17일
3

문제 발생 - EC2 key 분실

새로운 맥북을 구입한 기쁨을 만끽할 새도 없이, 생각보다 백업을 너무 안했다는 것을 점점 깨닫는 요즘이다. 한동안 aws 서버에 접속할 일이 없어 잊고 지냈는데, EC2 인스턴스에 접속할 때 사용하는 키페어인 someone_key_aws.pem 파일이 사라진 것이다. 행복하지 않다. 위코드 1차 프로젝트 베라 서버 열어달라는 요청을 받고 알게 된 너무나 큰 사실.. 이런 일이 자주 생길 것 같아 이 기회에 정리해본다.

키 페어
Amazon EC2는 퍼블릭 키 암호화 기법을 사용하여 로그인 정보를 암호화 및 복호화합니다. 퍼블릭 키 암호화 기법은 퍼블릭 키를 사용하여 데이터를 암호화하고, 수신자가 프라이빗 키를 사용하여 해당 데이터를 복호화하는 방식입니다. 퍼블릭 키와 프라이빗 키를 키 페어라고 합니다. 퍼블릭 키 암호화 기법을 사용하면 암호 대신 프라이빗 키를 사용하여 인스턴스에 안전하게 액세스할 수 있습니다. [aws-key pair]

해결 방법

암호화된 채 저 멀리 사라진 키를 되찾아오는 방법은 없다. 새로운 인스턴스와 키 페어를 생성한 뒤, 원본 인스턴스의 스냅샷을 복제하여 백업하고, 새로운 키 페어를 원본 인스턴스에 붙여야한다.


기존 인스턴스 이미지 백업

키 페어를 잃어버린 내 원본 인스턴스를 선택하여 [작업] - [이미지] - [이미지 생성]을 선택하여 백업 이미지를 만든다.

이미지, AMIs (Amazone Machine Images)
EC2 인스턴스를 그대로 저장해서 재사용할 수 있도록 만든 것입니다. 현재 서버의 하드웨어, 소프트웨어 설정, 어플리케이션등을 그대로 사용할 수 있습니다. Private(비공개 개인 이미지), public(누구나 사용할 수 있는 공개 이미지), Marketplace(판매, 구매 가능한 이미지) 세 종류가 있습니다.
(참조 : https://ithub.tistory.com/56)


기존 인스턴스 정지(stop) & 새로운 인스턴스 생성

AWS EC2 인스턴스를 생성하는 방법은 위코드 동기 kay님 블로그를 참조했다. 새로운 인스턴스를 생성하고, 기존의 인스턴스는 중지시킨다.


인스턴스 볼륨 detach & attach

  1. AWS 왼쪽 배너 중 ELASTIC BLOCK STORE - Volumes에서 키 페어를 분실한 EC2 인스턴스의 볼륨을 분리(detach)한다.
  2. 키 페어를 분실한 EC2 인스턴스의 볼륨 을 다시 선택해서 새로운 EC2 인스턴스 에 붙인다(attach).

    Amazon EBS (Elastic Block Store) 와 볼륨
    인스턴스 스토어와 EBS 모두 아마존 EC2 인스턴스와 관련있는 저장용 스토리지입니다. 데이터를 저장하는 것은 물론이고, 스냅샷 기능을 제공해서 EBS의 현재 상태를 그대로 보존할 수 있습니다. 인스턴스 스토어는 이름에서 알 수 있듯 임시로 저장하는 공간이기에, 데이터를 장기적으로 유지하거나 암호화하려는 경우에는 EBS 볼륨을 사용하는 것이 이상적입니다. EBS 볼륨은 EBS로 생성한 스토리지 디바이스입니다.


인스턴스 접속 후 볼륨 마운트

  1. 생성된 새로운 키페어를 이용하여 새로운 EC2 인스턴스에 접속한다.

    ssh -i /Users/shlee/Downloads/key_soheon_backend.pem ubuntu@ec2-54-180-157-216.ap-northeast-2.compute.amazonaws.com"

    .zshrc or .bashrc에 인스턴스 접속 명령어를 alias로 지정해두면 매번 aws 주소를 입력하지 않아도 되어서 편하다.

    alias aws="ssh -i /Users/shlee/Downloads/key_soheon_backend.pem ubuntu@ec2-5    4-180-157-216.ap-northeast-2.compute.amazonaws.com"

    처음 접속했을 때는 아무것도 없는 빈 우분투를 맞이하게된다. 좌절하지 말자.

  2. 볼륨을 마운트한다.

    sudo mount /dev/sdf1 /mnt
    or
    sudo mount /dev/sdf /mnt

우선 성공

결과

다시 다 돌아왔다. 다시 나는 행복해졌다.

그런데

이것은 새로운 인스턴스를 생성한 것이다. 새로운 인스턴스와 새로운 키 페어를 만들고, 그 새로운 인스턴스에 모든 것을 옮겨온 것이다. 기존 인스턴스에 새로운 키 페어를 결합한 것이 아니라는 뜻이다. 새로운 인스턴스를 사용해도 되지만, 기존 인스턴스를 유지하고자 하는 경우는 아래와 같은 작업이 추가로 필요하다.

  1. /mnt/home/ec2-user/.ssh/authorized_keys 파일을 수정하여 새 공개 키로 교체
  2. sudo umount /mnt를 입력하여 볼륨 마운트 해제, ELASTIC BLOCK STORE → Volumes로 이동한 뒤 임시 EC2 인스턴스에서 키 쌍을 분실한 EC2 인스턴스의 볼륨을 Detach
  3. 키 쌍을 분실한 EC2 인스턴스의 볼륨을 원래 EC2 인스턴스에 Attach(Device는 /dev/xvda로 설정)
  4. EC2 인스턴스를 시작(start), 교체한 키 쌍을 사용하여 SSH로 접속

나는 이 과정을 아직 진행하지 못했다. 이유는 authorized_keys 파일을 열었을 때 암호화되어 있는 키를 보았다. 무언가 굉장히 긴. 막연한 두려움에 파일을 닫았다. 긴 코드 울렁울렁.. 이걸 어떻게 새 공개 키로 교체하는지 아직 모르겠다. 다시 또 싸워야 한다. 영원한 고통 server...

참고

키 쌍 파일(pem)을 분실했다면?
http://pyrasis.com/book/TheArtOfAmazonWebServices/Chapter07/01

EC2 서버 생성하기
https://velog.io/@k904808/AWS-1

profile
Hello, World

0개의 댓글