일반적인 연결 전제 조건
일반적인 연결 전제 조건 (General connection prerequisites)
다음은 인스턴스에 연결하기 위한 일반적인 전제 조건이에요. 선택한 연결 옵션마다 추가 전제 조건이 있을 수 있다는 점을 기억하세요.
출처: 문서
본문
일반 전제 조건:
- 인스턴스가 상태 점검을 통과했는지 확인해요. 인스턴스가 연결 요청을 받을 준비가 되려면 몇 분 걸릴 수 있어요.
- 필요한 인스턴스 세부 정보를 확보해요.
- 개인 키(private key)를 찾고 권한을 설정해요.
- (선택) 인스턴스 지문(fingerprint)을 확보해요.
필요한 인스턴스 세부 정보 확보하기 (Get the required instance details)
인스턴스에 연결할 준비를 하려면 Amazon EC2 콘솔이나 명령줄에서 다음 정보를 얻어요.
인스턴스의 공용 DNS 이름(public DNS name) 얻기 — Amazon EC2 콘솔의 Instances 창에서 Public IPv4 DNS 열을 확인해요. 열이 숨겨져 있으면 화면 오른쪽 위의 설정(기어) 아이콘에서 Public IPv4 DNS를 선택해요. 또는 Instances 창에서 인스턴스를 선택하면 페이지 아래쪽에 인스턴스 정보가 나타나는데, Details 탭 아래 Public IPv4 DNS를 찾아요. 원한다면 describe-instances(AWS CLI)나 Get-EC2Instance(AWS Tools for Windows PowerShell) 명령을 쓸 수도 있어요.
Public IPv4 DNS가 표시되지 않으면 Instance state가 Running이고 인스턴스를 사설 서브넷에서 시작하지 않았는지 확인해요. 시작 인스턴스 마법사로 인스턴스를 시작했다면 Network settings 아래의 Auto-assign public IP 필드를 Disable로 편집했을 수 있어요. 이 옵션을 비활성화하면 인스턴스가 시작될 때 공용 IP가 할당되지 않아요.
(IPv6 전용 인스턴스) 인스턴스의 IPv6 주소 얻기 — 인스턴스에 IPv6 주소를 할당했다면 공용 IPv4 주소나 공용 IPv4 DNS 호스트 이름 대신 IPv6 주소로 연결할 수 있어요. 로컬 컴퓨터에 IPv6 주소가 있고 IPv6를 사용하도록 구성되어야 해요. 콘솔의 IPv6 IPs 열이나 Details 탭의 IPv6 address에서 확인해요.
(Linux 인스턴스) 사용자 이름 얻기 — 사용자 계정의 사용자 이름 또는 인스턴스를 시작할 때 사용한 AMI의 기본 사용자 이름으로 연결할 수 있어요.
기본 사용자 이름(일반 AMI):
- Amazon Linux –
ec2-user - CentOS –
centos또는ec2-user - Debian –
admin - Fedora –
fedora또는ec2-user - FreeBSD –
ec2-user - RHEL –
ec2-user또는root - SUSE –
ec2-user또는root - Ubuntu –
ubuntu - Oracle –
ec2-user - Bitnami –
bitnami - Rocky Linux –
rocky - 기타 – AMI 제공자에게 확인
개인 키 찾기와 권한 설정 (Locate the private key and set permissions)
SSH로 Linux 인스턴스에, RDP로 Windows 인스턴스에 처음 연결하려면 개인 키 파일의 위치를 알아야 해요. SSH 연결의 경우 개인 키를 사용자만 읽을 수 있도록 파일 권한을 설정해야 해요.
- 개인 키 찾기 — 인스턴스를 시작할 때 지정한 키 페어의
.pem파일이 컴퓨터에 있는 완전한 경로를 찾아요. 개인 키 파일을 찾을 수 없다면 "I've lost my private key. How can I connect to my instance?"를 참고하세요. (Linux 인스턴스) PuTTY로 연결하면서.pem을.ppk로 변환해야 한다면 "Convert your private key using PuTTYgen"을 참고하세요. - (Linux 인스턴스) 개인 키 권한 설정 — macOS나 Linux 컴퓨터의 SSH 클라이언트로 연결하려면 다음 명령을 사용해 개인 키 파일을 사용자만 읽을 수 있도록 해요.
권한을 설정하지 않으면 이 키 페어로 인스턴스에 연결할 수 없어요. Windows 컴퓨터에서는 파일 탐색기에서chmod 400 key-pair-name.pem.pem파일을 마우스 오른쪽 클릭하고 Properties > Security 탭 > Advanced > Disable inheritance를 선택하고, 현재 사용자를 제외한 모든 사용자의 접근을 제거해요.
(선택) 인스턴스 지문 얻기 (Get the instance fingerprint)
중간자(man-in-the-middle) 공격으로부터 자신을 보호하려면 연결하려는 인스턴스의 표시된 지문을 검증해 인스턴스의 정품을 확인할 수 있어요. 타사가 제공한 공용 AMI에서 인스턴스를 시작했다면 지문 검증이 유용해요.
먼저 인스턴스에서 지문을 얻고, 인스턴스에 연결할 때 지문을 확인하라는 메시지가 뜨면 이 절차에서 얻은 지문과 표시된 지문을 비교해요. 지문이 일치하지 않으면 누군가 중간자 공격을 시도하는 것일 수 있어요. 일치하면 자신 있게 연결할 수 있어요.
전제 조건: 인스턴스가 pending 상태가 아니어야 해요(지문은 첫 부팅이 완료된 후에만 사용 가능해요). 콘솔 출력을 얻으려면 인스턴스 소유자여야 해요.
콘솔: 인스턴스를 선택하고 Actions, Monitor and troubleshoot, Get system log를 선택해요.
AWS CLI: 로컬 컴퓨터에서 get-console-output 명령을 사용해요.
aws ec2 get-console-output \
--instance-id i-1234567890abcdef0 \
--query Output \
--output text > temp.txt
PowerShell: Get-EC2ConsoleOutput cmdlet을 사용해요.
$encodedOutput = (Get-EC2ConsoleOutput -InstanceId i-1234567890abcdef0).Output
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($encodedOutput))
콘솔 출력에서 BEGIN SSH HOST KEY FINGERPRINTS 아래의 인스턴스(호스트) 지문을 찾아요. 인스턴스 지문이 여러 개일 수 있어요. 연결 시 그중 하나만 표시돼요. 다음은 예시 출력이에요.
ec2:#############################################################
ec2: -----BEGIN SSH HOST KEY FINGERPRINTS-----
ec2: 256 SHA256:l4UB/neBad9tvkgJf1QZWxheQmR59WgrgzEimCG6kZY no comment (ECDSA)
ec2: 256 SHA256:kpEa+rw/Uq3zxaYZN8KT501iBtJOIdHG52dFi66EEfQ no comment (ED25519)
ec2: 2048 SHA256:L8l6pepcA7iqW/jBecQjVZClUrKY+o2cHLI0iHerbVc no comment (RSA)
ec2: -----END SSH HOST KEY FINGERPRINTS-----
ec2: #############################################################
참고: 인스턴스에 연결할 때 이 지문을 참조하게 돼요.