클라우드 컴퓨팅/AWS 실습

[AWS] EC2 인스턴스 프라이빗 키 분실 시 대처 방법

우잉~ 2025. 2. 3. 02:08

SSH 접속 및 키 페어 개요

EC2 인스턴스로 SSH 접속을 하기 위해서는 기본적으로 키 페어를 이용한다.

키 페어는 암호화된 퍼블릭 키(Public key, 공개 키)와 프라이빗 키(Private key, 개인 키) 두 개의 쌍을 뜻한다.

EC2 인스턴스 생성 시 퍼블릭 키는 EC2 인스턴스에 저장되고, 프라이빗 키는 사용자의 로컬 환경에 저장된다.

사용자는 프라이빗 키를 사용해 안전하게 SSH 접속이 가능하다.

 

 

[SSH 접속 절차]

  1. 클라이언트가 SSH 연결 요청 시 서버는 클라이언트에게 서명 요청
  2. 클라이언트는 프라이빗 키를 이용해 서명
  3. 서버는 자신에게 등록된 퍼블릭 키로 해당 서명이 유효한지 검증
  4. 검증 성공 시 접속 허용

위 내용을 정리해보자면

퍼블릭 키는 EC2 인스턴스에 저장된다. → AWS에 저장되므로 내가 관리하지 않아도 된다.

프라이빗 키는 사용자 환경에 저장된다. → 내가 관리해야 한다. 

 

결국 프라이빗 키는 내가 철저히 관리해야 된다. 프라이빗 키가 없다면 EC2 인스턴스에 접속할 수 있는 방법이 없다.

하지만 해킹으로 키를 탈취당하거나 실수로 키페어를 삭제한다거나...  새로 입사했는데 이전 담당자가 사용하던 키 페어를 전달받지 못하는 상황이 발생할 수도 있다.

 

이러한 상황을 어떻게 해결해야 할까?

 

 

SSH 키 페어 복구하기

기존에 있던 키 페어는 사용할 수 없게 됐다.

 

그래서 기존에 있는 키 페어 대신 새로운 키 페어를 만들어 새로 등록해야 한다.

퍼블릭 키는 AWS에 저장되며 EC2 인스턴스의 /home/사용자 이름/.ssh/authorized_keys에 저장된다.

이 파일의 내용을 내가 새로 만든 키 페어의 퍼블릭 키로 내용을 바꿔주면 된다.

 

 

 

어떻게 바꾸냐?

EC2 인스턴스를 생성하면 기본적으로 EBS 기반으로 생성된다.

EBS란 블록 단위로 저장되는 스토리지로 하드 디스크라고 생각하면 된다.

EBS는 볼륨 단위로 생성되어 EC2에 연결된다. 이 볼륨은 EC2 인스턴스에 붙였다(연결, attach) 뗐다(분리, detach)할 수 있다.

이 원리를 이용하여 새로운 키 페어의 퍼블릭 키를 authorized_key 파일에 저장할 것이다.

 

 

[진행 단계]

  1. 기존 인스턴스의 볼륨 분리 후 새 인스턴스에 연결하기
  2. 퍼블릭 키 복사하기
  3. 볼륨 분리 후 기존 인스턴스에 다시 연결하기

 

[인스턴스]

  • web-server: 프라이빗 키 잃어버린 인스턴스
  • recovery-key: 새로 생성한 퍼블릭 키가 저장된 인스턴스

 

1. 기존 인스턴스의 볼륨 분리 후 새 인스턴스에 연결하기

볼륨을 분리하여 새 인스턴스에 연결하는 과정을 진행할 것이다.

진행 단계 1

 

기존에 실행 중인 인스턴스(프라이빗 키를 잃어버린 web-server)를 중지한 후 새로운 인스턴스(recovery-key)를 생성한다.

실행 중인 인스턴스 중지
새 인스턴스 생성

 

web-server의 볼륨을 분리하여 recovery-key 인스턴스에 연결한다.

잃어버린 인스턴스의 볼륨 분리

 

분리 완료 후 새로 만든 인스턴스 볼륨 연결
볼륨을 새 인스턴스에 연결

 

recovery-key에 web-server의 볼륨을 연결함으로써 2개의 볼륨을 가지게 된다.

 

볼륨이 잘 끼워졌는지 확인하기 위해서 lsblk 명령을 이용한다.

볼륨 정보 확인

 

우선 볼륨을 추가해줬으니 마운트를 해야 한다.

sudo mount /dev/xvdf1 /mnt 명령을 이용하여 /mnt 디렉토리에 마운트한다.

마운트가 되지 않는다면 sudo apt-get update 명령을 사용한 뒤 다시 시도해본다.

다시 lsblk 명령을 이용하여 마운트가 잘 되었는지 확인한다.

마운트 완료

2. 퍼블릭 키 복사하기

볼륨을 사용할 수 있게 되었으니, 새로운 키 페어의 퍼블릭 키를 마운트한 볼륨에 복사하면 된다.

진행 단계 2

나는 recovery-key 인스턴스를 생성할 때 우분투 이미지를 골랐기 때문에 퍼블릭 키는 /home/ubuntu/.ssh/authorized_keys에 저장되어 있다.

cat 명령어로 퍼블릭 키의 내용을 확인할 수 있다.

퍼블릭 키 정보 확인

 

이제 마운트한 볼륨에 이 퍼블릭 키 정보를 복사하여 저장한다.

두 볼륨에 모두 새로 생성한 키 페어의 퍼블릭 키가 저장된다.

recovery-key의 퍼블릭 키 복사 완료

 

3. 볼륨 분리 후 기존 인스턴스에 다시 연결하기

authorized_key 파일 내용을 새로운 퍼블릭 키 내용으로 변경하였으니 이제 새 프라이빗 키를 이용하여 web-server 인스턴스에 접속할 수 있게 된다.

진행 과정 3

 

recovery-key에 연결해뒀던 web-server의 볼륨을 분리하여 여태 사용하지 못했던 web-server 인스턴스에 다시 연결한다.

다시 기존 인스턴스에 볼륨 연결

 

중지했던 인스턴스를 시작하여 접속을 테스트해본다.

무사히 접속할 수 있게 되었다~!

접속 성공

 

 

프라이빗 키를 잃어버려도 당황하지 않을 수 있게 되었다.