키 페어란? .pem 키란?
AWS EC2 인스턴스 생성 시 키 페어를 얻게 됩니다
- 인스턴스 생성 마지막 단계에서 키 페어 선택/생성 옵션을 확인할 수 있습니다
- 새 키 페어 생성을 선택하면 .pem 파일을 다운로드 받을 수 있습니다
- 이때가 해당 키 페어 파일을 다운로드 받을 수 있는 유일한 기회!
- 다운로드 후에는 AWS에서 다시 다운로드 불가능 (보안상의 이유)
키 페어는 두 개의 키로 구성됩니다:
공개 키(Public Key)
- AWS가 EC2 인스턴스에 저장
- .pub 확장자를 가짐
- 누구나 볼 수 있어도 됨
개인 키(Private Key)
- 사용자가 다운로드 받는 .pem 파일
- 절대 공개되면 안 됨
- EC2 접속할 때 사용하는 키
- chmod 400으로 권한 설정 필요
작동 방식
- EC2에 SSH 접속 시도할 때
- 내가 가진 개인 키(.pem)가
- EC2에 저장된 공개 키와 쌍을 이루는지 확인
- 맞으면 접속 허용, 틀리면 거부
그래서 .pem 파일(개인 키)을 잃어버리면 EC2에 접속할 수 없게 됩니다.
새로운 .pem 파일 얻는 방법 2가지?
기존 인스턴스를 계속 사용하는 방법
- 인스턴스 중지 (종료 아님)
- 해당 인스턴스의 루트 볼륨의 스냅샷 생성
- 새로운 볼륨을 생성하고 새 키 페어로 설정
- 이 볼륨을 원래 인스턴스에 연결
AMI를 사용하는 방법
- 현재 인스턴스의 AMI 생성
- 새로운 키 페어로 새 인스턴스 시작
- 기존 인스턴스의 설정과 데이터는 그대로 유지됨
잠깐만! 클로드가
더 간단하고 안전합니다
- 볼륨 조작이 필요 없음
- 실수로 데이터를 손실할 위험이 적음
- 과정이 더 직관적임
롤백이 쉽습니다
- 문제가 생기면 원래 인스턴스로 돌아갈 수 있음
- 원본 인스턴스는 그대로 보존됨
추가 이점이 있습니다
- 새로운 인스턴스에서 다른 설정도 업데이트 가능
- 인스턴스 타입 변경도 쉽게 가능
- 필요하다면 여러 개의 복제본 생성 가능
이와 같은 이유로 AMI를 추천해서 이를 실습해보며 좀 더 자세히 설명하도록 하겠습니다.
클로드 : 모르면 일단 날 믿으셈
그런데 AMI / Volume는 뭐죠?
AMI (Amazon Machine Image)
- 컴퓨터의 "복제품" 또는 "백업 이미지"라고 생각하면 될것 같습니다.
- 예시: 컴퓨터를 통째로 복사해서 새로운 컴퓨터를 만드는 것
- 모든 프로그램, 설정, 파일들이 그대로 복사됨
볼륨 (Volume)
- 컴퓨터의 "하드디스크" 라고 생각하면 될것 같습니다
- EC2 인스턴스의 저장 공간
- 예시: 노트북의 하드디스크를 새것으로 교체하는 것처럼, EC2의 저장 공간을 교체
볼륨 방식으로 키 페어를 변경한다는 것은
- 하드디스크(볼륨)를 백업하고
- 새로운 키로 설정된 하드디스크를 만들어서
- 기존 컴퓨터(인스턴스)에 새 하드디스크를 장착하는 것과 비슷
AMI 방식은
- 컴퓨터 전체를 새로 복제해서
- 새로운 키를 가진 새 컴퓨터를 만드는 것과 비슷
우리가 앞서 키 페어 분실 상황에서 AMI를 사용한 이유는, 서버의 모든 내용을 그대로 유지한 채로 새로운 키 페어를 적용할 수 있기 때문
간단하게 개발용으로 생성한 인스턴스의 경우 AMI로 키를 교체해도 되지만 Live서비스나 복잡한 설정이 되어 있는 인스턴스의 경우 다른 방법을 추천한다고 합니다.
※ AWS 기능에 기존 인스턴스 IP로 직접 입력하여 설정한 부분이 있다면 변경된 새 인스턴스의 IP로 모두 수정해주셔야 하기 때문에 오류 발생이 높을 것 같으면 다른 방법을 추천.
AMI를 사용해서 새로운 키페어 만들기
1. 분실된 기존 인스턴스의 이미지(AMI) 생성
- EC2 콘솔에서 인스턴스 선택
- 작업 → 이미지 및 템플릿 → 이미지 생성 선택
- 이미지가 생성될 때까지 대기
이미지 > AMI 에서 생성한 이미지와 이 이미지의 상태가 [대기중] 인것을 확인 할 수 있습니다.
이미지가 생성완료 되면 상태가 [사용 가능] 으로 표시됩니다.
이때부터 이미지로 인스턴스를 생성할 수 있습니다.
2. 새 키 페어 생성
- EC2 콘솔의 "키 페어" 메뉴에서 생성
- 새로운 .pem 파일 다운로드 및 안전하게 보관
3. 새 인스턴스 생성
- AMI 메뉴에서 방금 생성한 이미지 선택
- "AMI로 인스턴스 시작" 클릭
- 인스턴스 설정 시 새로 만든 키 페어 선택
- 다른 설정(보안그룹, 서브넷 등)은 기존과 동일하게 설정
- 인스턴스 생성 후 기존 인스턴스는 중지 / 제거
AMI를 사용해 새 인스턴스를 생성할 때는 설정은 그대로 보안 그룹 설정은 자동으로 복사되지 않습니다.
이유는
- AMI는 인스턴스의 디스크 이미지와 설정을 복사
- 하지만 보안 그룹은 인스턴스 외부의 AWS 네트워크 설정이라 별도로 지정해야 함
해결 방법
- 원본 인스턴스의 보안 그룹 설정 확인
- 새 인스턴스의 보안 그룹에 동일한 인바운드 규칙 추가
- 인스턴스 선택 → 보안 탭
- 보안 그룹 ID 클릭
- "인바운드 규칙 편집"
- 원본과 동일하게 규칙 설정
위를 참고해서 꼭 수정해줘야 접속할 수 있습니다.
추가로 .pem 파일에 보안 수준을 높여줘야 합니다.
그렇지 않으면 ssh 접속을 거부하게 됩니다.
chmod 400 ~/ssh/zzim-mbti-img.pem
4. 테스트 후 정리
- 새 인스턴스에 새 키 페어로 접속 테스트
- 모든 것이 정상 작동하면 기존 인스턴스 종료
.pem 파일 잃어버렸던 ssh 접속 성공!
AMI, Volume 사용의 장 / 단점
AMI 방식과 Volume 수정 방식을 비교해드리겠습니다:
AMI 방식
장점
- 과정이 단순하고 직관적
- 실수할 가능성이 적음
- 문제 생기면 원래 인스턴스로 복구 가능
- 새로운 환경에서 깔끔하게 시작 가능
단점
- IP 주소가 변경됨
- 연동된 서비스 설정 모두 수정 필요
- 보안 그룹 등 네트워크 설정 다시 해야 함
Volume 수정 방식 (IP 유지하면서 하는 방법)
장점
- IP 주소가 유지됨
- 기존 설정이 그대로 유지됨
- 연계 서비스 설정 변경 불필요
- 보안 그룹 등 네트워크 설정 유지
단점
- 절차가 더 복잡함
- 볼륨 작업 시 실수하면 데이터 손실 위험
- 복구가 어려울 수 있음
따라서
- 개발/테스트 환경 → AMI 방식 추천
- 실제 운영/중요 서비스 → Volume 수정 방식 추천
AMI, Volume 차이점
AMI 방식
- 컴퓨터 전체를 복제
- 새로운 IP, 새로운 네트워크 환경에서 시작
- 마치 같은 프로그램과 데이터를 가진 새 컴퓨터를 만드는 것
볼륨 방식
- 하드디스크만 교체하지만, 같은 컴퓨터에서 실행
- IP와 네트워크 설정은 그대로 유지
- 마치 컴퓨터는 그대로인데 하드디스크만 교체하는 것
두 방식 모두 데이터와 설정은 유지되지만:
- AMI는 완전히 새로운 환경에서 시작 (새 IP)
- 볼륨은 기존 환경을 그대로 유지 (같은 IP)
그래서 단순한 개발 환경에서는 AMI가 더 편하고, 실제 서비스에서는 볼륨 방식이 더 안전합니다.
https://herojoon-dev.tistory.com/195
댓글