JSCODE Logo
JSCODE 박재성JSCODE 제이온JSCODE 시니
과외유튜브블로그후기
완강 후기 이벤트블로그 리뷰 이벤트AWS SAA 합격 후기 이벤트
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2026 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침

비전공자도 이해할 수 있는 AWS 중급/실전 (보안 가용성편)

서비스 운영에 필수적인 네트워크 구성 방법 (VPC)

목표 설정
VPC란? / VPC를 왜 쓰는 걸까?
CIDR이란? / CIDR 표기법 해석 방법
[예제] CIDR 표기법 해석하기
사설 IP(프라이빗 IP) vs 공인 IP(퍼블릭 IP)
[실습] 사설 IP(프라이빗 IP)로 통신해보기
[실습] VPC 생성하기
서브넷이란 ?
[실습] 서브넷 생성하기
[실습] 퍼블릭 서브넷에 EC2 배치해보기
인터넷 게이트웨이란?
[실습] 인터넷 게이트웨이 생성하기
라우팅 테이블이란?
[실습] 라우팅 테이블 생성하기
AWS 아키텍처 그림으로 표현해보기
[복습] 퍼블릭 서브넷에 EC2 배치하기

외부 접근을 차단해 보안 강화시키기 (프라이빗 서브넷)

NAT 게이트웨이란 ?
[실습] NAT 게이트웨이 생성하기
[실습] 프라이빗 서브넷에 EC2 배치해서 외부 접근 차단하기
[실습] 프라이빗 서브넷의 EC2에 접속하는 방법
Bastion Host란?
[실습] 퍼블릭 서브넷에 Bastion Host 배치하기

서비스 장애 예방하기 (고가용성, 시스템 이중화)

가용성이란 ? / 시스템 이중화란 ?
가용 영역이란 ?
[실습] 가용 영역 2개를 활용해 VPC 구성하기
[실습] 새로운 가용 영역에 EC2 배치하기
[실습] 프라이빗 서브넷에 RDS 인스턴스 추가하기
[실습] 프라이빗 서브넷에 있는 RDS에 접속하는 방법
[실습] EC2 인스턴스에 Spring Boot 프로젝트 배포하기
[실습] ELB 추가하기
RDS의 다중 AZ 배포란?
[실습] RDS에 다중 AZ 배포 설정으로 장애 대비하기

접근 범위를 제한해서 보안 강화시키기 (보안 그룹)

최소 권한의 원칙(PoLP)이란?
보안 그룹이란?
[실습] 로드 밸런서(ALB)의 보안 그룹 수정하기
[보충 강의] 보안 그룹에 포함되지 않은 주체가 요청을 보내면 어떻게 작동할까?
[실습] EC2(Bastion Host)의 보안 그룹 수정하기
[실습] EC2(백엔드 서버)의 보안 그룹 수정하기
[실습] RDS(데이터베이스 서버)의 보안 그룹 수정하기

현업에서 자주 사용하는 AWS 인프라 아키텍처 직접 구축하기

[최종 미션] 현업에서 자주 사용하는 AWS 인프라 아키텍처 직접 구축해보기
[해설 강의] VPC 구성하기
[해설 강의] Bastion Host 배치하기
[해설 강의] RDS 배치하기
[해설 강의] 백엔드 서버 배치하기
[해설 강의] ALB 배치하기
[해설 강의] 보안 그룹 타이트하게 수정하기 (Bastion Host, ELB, 백엔드 서버, RDS)
← 블로그 목록으로 돌아가기

[실습] 프라이빗 서브넷의 EC2에 접속하는 방법

JSCODE 박재성
JSCODE 박재성
2026. 03. 14.
author
JSCODE 박재성
category
AWS
createdAt
Dec 6, 2025 12:49 PM
isPublic
isPublic
series
비전공자도 이해할 수 있는 AWS 중급/실전 (보안 가용성편)
slug
exercise-access-private-ec2
type
post
updatedAt
Mar 14, 2026 09:00

✅ 프라이빗 서브넷에 접근하는 방법

프라이빗 서브넷(Private Subnet)은 외부에서 접근이 불가능하다고 얘기했다. 하지만 같은 VPC 내부에서는 퍼블릭 서브넷의 리소스와 프라이빗 서브넷의 리소스가 자유자재로 통신이 가능하다는 점을 활용해서 프라이빗 서브넷에 있는 EC2 인스턴스에 접근해보자.
notion image
 
 

✅ 키 페어를 활용한 EC2 접근

notion image
기존에는 AWS에서 제공하는 기능을 활용해 키 페어 없이 쉽게 EC2 인스턴스에 접근할 수 있었다. 하지만 이번 실습에서는 AWS에서 제공하는 기능을 활용하지 않고, 터미널(terminal)과 키 페어를 활용해 EC2 인스턴스에 접속해보자.
 
 

✅ [실습] 프라이빗 서브넷의 EC2에 접속하는 방법

  1. 로컬 컴퓨터에서 퍼블릭 서브넷에 존재하는 EC2 인스턴스에 접속하기
    1. $ cd [키 페어 파일이 존재하는 경로] $ chmod 400 "web-server.pem" # 키 페어 파일 보안을 위한 권한 설정 $ ssh -i "web-server.pem" ubuntu@[EC2 인스턴스의 Public IP]
      notion image
       
  1. ‘퍼블릭 서브넷에 위치한 EC2 인스턴스(web-server)’로 ‘instagram-server의 키 페어 파일’ 보내기
    1. 퍼블릭 서브넷에 위치한 EC2 인스턴스(web-server)에서 프라이빗 서브넷에 위치한 EC2 인스턴스(instagram-server)로 접속할 것이다. web-server 인스턴스에서 instagram-server 인스턴스로 접속하는 게 가능한 이유는 같은 VPC에 존재하기 때문이다.
       
      web-server 인스턴스에 접속할 때 web-server의 키 페어가 필요했던 것처럼, instagram-server 인스턴스에 접속할 때는 instagram-server의 키 페어가 필요하다. 따라서 instagram-server의 키 페어를 web-server 인스턴스로 전송해야 한다.
      notion image
       
      $ cd [키 페어 파일이 존재하는 경로] # scp -i [EC2 접근을 위한 키 페어 파일] [전송할 파일명] [서버 username]@[EC2 인스턴스의 Public IP]:[전송 받을 파일 위치] $ scp -i web-server.pem instagram-server.pem ubuntu@[EC2 인스턴스의 Public IP]:~/
       
       
  1. web-server 인스턴스로 키 페어 파일이 잘 전송됐는 지 확인하기
    1. notion image
       
  1. instagram-server로 접속해보기
    1. $ cd [키 페어 파일이 존재하는 경로] $ chmod 400 "instagram-server.pem" # 키 페어 파일 보안을 위한 권한 설정 $ ssh -i "instagram-server.pem" ubuntu@[EC2 인스턴스의 프라이빗 IP]
      notion image
      ubuntu@ 뒤에 보면 각 인스턴스의 Private IP가 작성되어 있다. @ 뒤에 적혀있는 부분이 각 컴퓨터에 붙여놓은 닉네임을 뜻한다. 이걸 보고 리눅스에서는 hostname이라고 부른다. instagram-server에 접속하기 전후의 hostname을 비교해보니 잘 접속이 됐다는 걸 확실하게 확인할 수 있다.
       

✅ 마무리

프라이빗 서브넷에 있는 AWS 리소스인 EC2 인스턴스에 접근하기 위해, 퍼블릭 서브넷에 있는 EC2 인스턴스를 활용했다. 이와 같이 프라이빗 서브넷의 AWS 리소스에 접근하기 위해 배치한 컴퓨터를 보고 Bastion Host라고 부른다. 다음 강의에서는 Bastion Host가 뭔지 자세히 알아보자.
📎
이 글은 비전공자도 이해할 수 있는 AWS 중급/실전 (보안, 가용성편) 강의의 수업 자료 중 일부입니다.