SSH Key Pair를 분실했을 때 Bastion Host에 다시 접근하는 방법을 4가지로 정리했습니다.
방법 1. AWS Systems Manager Session Manager 사용 (권장)
가장 쉽고 안전한 방법으로, 브라우저 기반으로 EC2에 접속할 수 있습니다.
전제조건
- EC2에 SSM Agent 설치
- EC2 IAM Role에 AmazonSSMManagedInstanceCore 정책 연결
- EC2가 인터넷 또는 VPC Endpoint를 통해 SSM 서비스와 통신 가능
접속 방법
- AWS Console → Systems Manager 이동
- 좌측 메뉴에서 Session Manager 선택
- Start Session 클릭
- Bastion Host EC2 인스턴스 선택
- 브라우저 기반 터미널로 접속 완료
새 SSH 키 등록
# SSH 디렉토리 생성
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# 새 Public Key 추가
echo "새로운_Public_Key_내용" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
장점
- 키 없이 즉시 접속 가능
- 네트워크 방화벽 규칙 변경 불필요
- 접속 로그가 CloudTrail에 자동 기록
단점
- 사전에 SSM Agent 설치와 IAM 역할 설정 필요
방법 2. EBS 볼륨 분리 후 직접 수정 (가장 확실한 방법)
기존 EC2의 루트 볼륨을 다른 EC2에 연결하여 authorized_keys 파일을 직접 수정하는 방법입니다.
작업 단계
1단계: Bastion Host EBS 볼륨 분리
- AWS Console에서 Bastion Host 인스턴스 중지(Stop)
- Volumes 메뉴로 이동
- 루트 볼륨(보통
/dev/xvda또는/dev/sda1) 선택 - Actions → Detach Volume 실행
2단계: 다른 EC2 인스턴스에 볼륨 연결
- 동일 가용 영역(AZ)의 정상 작동하는 EC2 인스턴스 선택
- 분리한 볼륨을 Attach Volume
- Device 이름은
/dev/xvdf등으로 지정
3단계: 볼륨 마운트 및 키 수정
# 마운트 포인트 생성
sudo mkdir /mnt/bastion
# 볼륨 마운트 (파티션 번호 확인 필요)
sudo mount /dev/xvdf1 /mnt/bastion
# authorized_keys 파일 수정
sudo nano /mnt/bastion/home/ubuntu/.ssh/authorized_keys
# 또는 ec2-user, centos 등 실제 사용자명에 맞게 경로 조정
# 새 Public Key 추가 후 저장
4단계: 볼륨 재연결
# 볼륨 언마운트
sudo umount /mnt/bastion
- AWS Console에서 볼륨 Detach
- Bastion Host에 원래 Device 이름(
/dev/xvda)으로 Attach - Bastion Host 인스턴스 시작(Start)
- 새 키로 SSH 접속 확인
장점
- SSM Agent나 추가 설정 없이 가능
- 100% 확실하게 키 등록 가능
- 루트 볼륨 직접 접근으로 다양한 문제 해결 가능
단점
- 인스턴스 중지로 인한 서비스 다운타임 발생
- 수동 작업이 많아 시간 소요
방법 3. EC2 Instance Connect 사용
Amazon Linux 2, Ubuntu 등 특정 AMI에서 사용 가능한 일회성 SSH 연결 방법입니다.
전제조건
- Amazon Linux 2 또는 Ubuntu 기반 인스턴스
- 보안 그룹에서 22번 포트(SSH) 허용
- IAM 권한에
ec2-instance-connect:SendSSHPublicKey포함
접속 방법
- AWS Console → EC2 인스턴스 선택
- Connect 버튼 클릭
- EC2 Instance Connect 탭 선택
- Connect 클릭하면 브라우저에서 터미널 실행
AWS가 임시 Public Key를 자동으로 전송하여 60초간 유효한 SSH 세션을 생성합니다.
영구 키 추가
# SSH 디렉토리 생성
mkdir -p ~/.ssh
# 새 Public Key 추가
echo "새로운_Public_Key_내용" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
장점
- 별도 설치 없이 지원되는 AMI에서 즉시 사용
- 간단한 웹 기반 접속
단점
- Amazon Linux 2, Ubuntu 등 특정 OS만 지원
- SSH 포트가 인터넷에 열려있어야 함
방법 4. AMI 생성 후 새 인스턴스로 교체
Bastion Host가 상태 비저장(Stateless) 서버라면 가장 깔끔한 해결 방법입니다.
작업 단계
- 기존 Bastion Host에서 AMI(Amazon Machine Image) 생성
- Actions → Image and templates → Create image
- 새 AMI로 새 인스턴스 시작
- 이번에는 새 Key Pair 선택
- 기존 설정 복제
- 동일한 보안 그룹 연결
- Elastic IP 재할당 (필요시)
- 동일한 Subnet 및 네트워크 구성
- 새 인스턴스 테스트 후 기존 인스턴스 종료
장점
- 깔끔하게 새 인스턴스로 시작
- 복잡한 파일 수정 작업 불필요
- AMI로 백업도 동시에 진행
단점
- 새 인스턴스로 IP 변경 가능 (Elastic IP 미사용 시)
- Stateful한 데이터가 있다면 추가 마이그레이션 필요
상황별 권장 방법
| 상황 | 추천 방법 | 이유 |
|---|---|---|
| SSM Agent 설치됨 | 방법 1 (Session Manager) | 가장 빠르고 안전 |
| SSM 미설치, 다운타임 허용 | 방법 2 (EBS 분리) | 가장 확실한 복구 |
| Amazon Linux/Ubuntu | 방법 3 (Instance Connect) | 간편한 일회성 접속 |
| Stateless 서버 | 방법 4 (AMI 재생성) | 깔끔한 재구축 |
예방 조치
향후 Key Pair 분실을 방지하기 위한 권장 사항:
- SSM Agent를 기본 설치하여 Session Manager 활용
- Key Pair를 안전한 위치에 백업 (암호화된 저장소)
- 여러 개의 Public Key 등록 (팀원별 또는 백업용)
- IAM 역할 기반 접근으로 키 의존도 감소
- 중요 서버는 정기적으로 AMI 백업 생성