(AWS엔드포인트) EC2 Instance Connect Endpoint를 이용한 프라이빗 EC2 접속 방법
프라이빗 서브넷에 있는 EC2 인스턴스에 무료로 접속하는 방법은 AWS의 EC2 Instance Connect Endpoint를 활용하면 가능합니다. 이는 AWS PrivateLink 기반으로 작동하여 퍼블릭 IP 없이도 SSH 및 RDP 접속을 가능하게 해 줍니다. 비용을 절감하면서도 보안성을 유지할 수 있는 장점이 있습니다.
EC2 Instance Connect Endpoint를 이용한 프라이빗 EC2 접속 방법
■ VPC Endpoint 설정하기
- AWS 콘솔 접속 → VPC 서비스 이동
- Endpoints 메뉴에서 Create Endpoint 선택
- 서비스 카테고리에서 "EC2 인스턴스 연결 엔트포인드"를 선택
- VPC 선택 (프라이빗 서브넷이 있는 VPC)
- 서브넷 선택 (프라이빗 서브넷)
- 보안 그룹 설정:
- Inbound 규칙에 TCP 22번 포트 허용 추가 (SSH)
- 필요하면 TCP 3389번 포트 허용 추가 (RDP)
- 엔드포인트 생성 클릭
■ EC2 인스턴스 보안 그룹 설정 확인
- EC2 인스턴스의 보안 그룹에서 Inbound 규칙 확인
- TCP 22 (SSH) 또는 TCP 3389 (RDP) 규칙이 EC2 Instance Connect Endpoint에서 올 수 있도록 허용
■ 로컬PC에서 SSH를 통한 EC2 접속 (AWS CLI 사용)
- AWS CLI를 설치하고 인증이 완료된 상태에서 아래 명령 실행:
- i-xxxxxxxxxxxxxxxxx → 프라이빗 EC2 인스턴스 ID
- 10022 → 로컬 머신에서 사용할 포트 (변경 가능)
bash |
aws ec2-instance-connect open-tunnel \ --instance-id i-xxxxxxxxxxxxxxxxx \ --local-port 10022 |
2. 로컬 터미널에서 SSH 접속(1.번과 다른 터미널에서 실행):
- my-key.pem → EC2 인스턴스에서 사용한 키 페어(내의 키 페어 파일명으로 변경)
bash |
ssh -i ~/.ssh/my-key.pem -p 10022 ec2-user@localhost |
(Hint) 앞에 설명과 같이 로컬PC에서 프라이빗 EC2 인스턴스에서 접속하지 위해서는 먼저 AWS CLI 명령으로 EC2 인스턴스 연결을 위한 local port로 터널을 오픈 합니다. 그리고 ssh 명령을 통해 EC2 인스턴스에 접속 합니다. 아래 예는 Shell 스크립트를 사용해 접속을 좀더 쉽게 처리예제 입니다. 관련 Shell 스크립트 파일도 함께 올려 드립니다.
추가로 local port 설정시 주의할 점은 10000번 이상 포트를 사용해야 한다는 점과 EC2의 IP주소가 아닌 @locahost로 접속하는 점을 주의하세요.
(다운로드) Shell 스크립트 파일
■ EC2 Instance Connect 기능 활용 (콘솔)
- AWS EC2 콘솔에서 프라이빗 EC2 인스턴스 선택 후 EC2 Instance Connect (Connect 버튼 클릭)
- 연결유형으로 "EC2 인스턴스 연결 엔드포인트를 사용하여 연결"를 선택
- "EC 인스턴스 연결 엔트포인트"로 앞에서 생성한 엔드포인트를 선택
- 사용자 이름과 최대 터널 시간(초)를 입력하고 연결 버튼 클릭
✅ 비용 절감 효과
- 퍼블릭 IP 불필요 → Elastic IP 및 NAT Gateway 비용 절감
- VPN, Bastion Host 없이 SSH 가능 → 유지보수 비용 절감
이 방법을 적용하면 NAT Gateway 비용 없이 프라이빗 서브넷 EC2에 안전하게 접속할 수 있습니다!