[AWS] 인스턴스 SSH 접속 문제 해결 가이드
SSH 접속 문제는 AWS 인스턴스 사용 시 가장 흔히 발생하는 이슈 중 하나입니다. 이 가이드에서는 체계적이고 시각적인 문제 해결 접근법을 제공합니다.
1. 인스턴스 상태 확인
기본 확인사항
- 인스턴스 실행 여부: AWS 콘솔에서 인스턴스가 "running" 상태인지 확인
- 상태 검사(Status Checks): 시스템 및 인스턴스 상태 검사가 모두 통과되었는지 확인
조치 방법:
- 상태 검사 실패 시 인스턴스 재시작(stop/start) 시도
- 시스템 로그 확인: 인스턴스 선택 → 작업 → 모니터링 및 문제 해결 → 시스템 로그 가져오기
2. 네트워크 연결성 검증
보안 그룹 설정
- 인바운드 규칙: SSH(포트 22)에 대한 인바운드 트래픽 허용 여부 확인
- 소스 IP 확인: 현재 사용 중인 IP가 허용 목록에 있는지 확인 (공용 IP 변경 여부 체크)
확인 방법:
AWS 콘솔 → EC2 → 인스턴스 선택 → 보안 탭 → 보안 그룹 ID 클릭 → 인바운드 규칙 탭
주의사항:
- 대부분의 SSH 접속 문제는 보안 그룹 설정과 관련이 있습니다
- 동적 IP 사용자는 접속할 때마다 IP 주소가 변경될 수 있으므로 보안 그룹 규칙 업데이트가 필요할 수 있습니다
네트워크 ACL 확인
- 서브넷 수준에서 포트 22에 대한 인바운드/아웃바운드 트래픽 허용 여부 확인
확인 방법:
AWS 콘솔 → VPC → 네트워크 ACL → 인스턴스 서브넷 ACL 선택 → 인바운드/아웃바운드 규칙 확인
3. SSH 인증 관련 문제
올바른 사용자 이름 사용
- 인스턴스 OS에 맞는 기본 사용자 이름:
- Amazon Linux 2/AL2023:
ec2-user
- Ubuntu:
ubuntu
- RHEL:
ec2-user
- CentOS:
centos
- Debian:
admin
- SUSE:
ec2-user
- Fedora:
fedora
또는ec2-user
- Bitnami AMI:
bitnami
- Amazon Linux 2/AL2023:
키 페어 관련 문제
Linux/macOS에서 프라이빗 키 권한 설정:
chmod 400 your-key.pem
Windows에서 PuTTY 사용 시:
- PuTTYgen을 이용하여 .pem 파일을 .ppk 형식으로 변환 필요
올바른 SSH 명령어 예시:
ssh -i /path/to/your-key.pem ec2-user@your-instance-public-ip
디버깅을 위한 상세 로그 확인:
ssh -vvv -i /path/to/your-key.pem ec2-user@your-instance-public-ip
4. 대체 접속 방법 (EC2 인스턴스에 SSH로 접속할 수 없을 때)
1. Session Manager 사용 (AWS Systems Manager)
Session Manager 사용 방법:
- 사전 요구사항:
- 인스턴스에 SSM Agent가 설치되어 있어야 함 (최신 Amazon Linux 2/AL2023는 기본 설치됨)
- 인스턴스에
AmazonSSMManagedInstanceCore
IAM 역할 연결 필요 - 인터넷 또는 VPC 엔드포인트를 통해 SSM 서비스에 접근 가능해야 함
접속 방법:
AWS 콘솔 → EC2 → 인스턴스 선택 → 연결 → Session Manager 탭 → 연결
Session Manager의 장점:
- 보안 그룹에서 인바운드 SSH 포트(22)를 열 필요 없음
- 키 페어 관리 불필요
- 모든 작업은 AWS CloudTrail에 기록되어 감사 가능
- 배스천 호스트 없이 프라이빗 서브넷의 인스턴스에 접속 가능
2. EC2 Serial Console 접속
Serial Console 사용 방법:
- 사전 요구사항:
- AWS 계정에서 Serial Console 액세스 활성화 필요
- 적절한 IAM 권한 필요
- 인스턴스에 루트 비밀번호 또는 기존 사용자 계정 정보가 필요
접속 방법:
AWS 콘솔 → EC2 → 인스턴스 선택 → 연결 → EC2 Serial Console 탭 → 연결
Serial Console 사용 시기:
- 인스턴스 부팅 문제 해결
- SSH 및 Session Manager 접속이 모두 불가능한 심각한 경우
- 커널 패닉, 네트워크 구성 오류 등 운영체제 수준 문제 진단
3. EC2 Instance Connect
EC2 Instance Connect 사용 방법:
- 사전 요구사항:
- 인스턴스에 EC2 Instance Connect 패키지 설치 필요 (최신 Amazon Linux는 기본 설치됨)
- 보안 그룹에서 포트 22 인바운드 트래픽 허용 필요
- EC2 Instance Connect의 IP 범위 확인 필요
접속 방법:
AWS 콘솔 → EC2 → 인스턴스 선택 → 연결 → EC2 Instance Connect 탭 → 연결
EC2 Instance Connect 장점:
- 웹 브라우저에서 직접 SSH 접속 가능
- SSH 키 페어 관리 불필요
- 임시 SSH 키를 사용한 안전한 접속
- 기존 SSH 인프라 활용 가능
5. 고급 문제 해결 방법
볼륨 분리 및 데이터 복구
이 방법은 인스턴스 접속이 완전히 불가능하거나 운영체제가 부팅되지 않는 경우 사용합니다.
볼륨 분리 및 복구 단계:
- 문제가 있는 인스턴스를 중지(Stop)합니다
- 해당 인스턴스의 루트 볼륨을 분리(Detach)합니다. (이전 장치명을 기록 해두시는 것이 좋습니다. 예시 : /dev/xvda1)
- 정상 작동하는 복구용 인스턴스를 준비합니다
- 분리한 볼륨을 복구용 인스턴스에 보조 볼륨으로 연결(Attach)합니다
- 복구용 인스턴스에서 SSH로 접속합니다
- 볼륨을 마운트하고 데이터를 복구합니다:
# 볼륨 확인
sudo lsblk # 마운트 디렉토리 생성
sudo mkdir -p /mnt/recovery # 볼륨 마운트
sudo mount /dev/xvdf1 /mnt/recovery # 장치 이름은 시스템에 따라 다를 수 있음 # 데이터 확인 및 복구
ls -la /mnt/recovery
- 문제 해결 후 원래 인스턴스에 볼륨을 다시 연결(2번에서 기록 해둔 장치명으로 연결)하거나 새 인스턴스를 생성합니다.
6. 예방적 접근 방법
시스템 시작 시 SSH 자동 설정 확인
인스턴스 사용자 데이터에 다음과 같은 스크립트를 추가하여 SSH 관련 문제를 예방할 수 있습니다:
#!/bin/bash # SSH 서비스 상태 확인 및 자동 재시작
systemctl is-active sshd || systemctl restart sshd systemctl enable sshd
# SSH 로그 확인을 위한 설정
echo "LogLevel VERBOSE" >> /etc/ssh/sshd_config systemctl restart sshd
# 접속 실패 시 자동 알림 설정 (선택사항) # 여기에 CloudWatch 경보 또는 SNS 알림 설정 추가
SSH 접속을 위한 안전한 대체 방법 구성
Session Manager 사전 설정:
- 모든 인스턴스에 SSM Agent 설치
- 적절한 IAM 역할 연결
- VPC 엔드포인트 구성으로 인터넷 없이도 접속 가능하게 설정
EC2 Serial Console 활성화:
- 계정 레벨에서 Serial Console 액세스 활성화
- 비상 접근용 암호 구성
백업 및 복구 계획 수립:
- 정기적인 AMI 또는 스냅샷 생성
- 장애 복구 절차 문서화 및 테스트
이 가이드를 통해 대부분의 AWS EC2 SSH 접속 문제를 효과적으로 해결할 수 있을 것입니다. 문제가 지속되거나 더 복잡한 이슈가 발생할 경우 AWS 지원 센터로 문의하시기 바랍니다.
이슈 발생이나 운영상의 어려움을 겪고 계시다면 저희 베스핀글로벌 Managed Service를 이용 해보시기 바랍니다.
감사합니다.
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.