공부하는 블로그

AWS | 토이프로젝트 운영서버 구축기 (3) - Private subnet EC2 인스턴스 생성 본문

AWS

AWS | 토이프로젝트 운영서버 구축기 (3) - Private subnet EC2 인스턴스 생성

치킨닮은닭 2023. 1. 3. 17:24

* 토이 프로젝트를 진행하면서 AWS를 이용하여 Spring 기반의 운영 서버를 구축한 내용을 정리했습니다.

 

 이번 포스팅에서는 같은 VPC 내의 인스턴스에서만 접근이 가능한 프라이빗 AWS EC2 인스턴스를 생성하고, 보안그룹을 설정하여 배스천 서버를 통해 터미널에 접근하는 방법에 대해 알아보겠습니다. 배스천 서버 생성은 이전 포스팅을 참고해주세요!

 

* 이전 포스팅

 

[AWS] 토이프로젝트 운영서버 구축기 (1) - 인프라 모델링

* 토이 프로젝트를 진행하면서 AWS를 이용하여 Spring 기반의 운영 서버를 구축한 내용을 정리했습니다. 토이 프로젝트를 하면서 실제로 앱 배포를 해볼 수 있는 기회가 생겼습니다! 제가 합류했을

gongbu-ing.tistory.com

 

[AWS] 토이프로젝트 운영서버 구축기 (2) - Public subnet EC2 인스턴스 생성

* 토이 프로젝트를 진행하면서 AWS를 이용하여 Spring 기반의 운영 서버를 구축한 내용을 정리했습니다. 이번 포스팅에서는 AWS EC2 인스턴스를 생성하고, 보안그룹을 설정하여 로컬 PC에서 ssh를 통

gongbu-ing.tistory.com

1. WAS용 Private EC2 생성 및 보안 그룹 설정

 AWS 콘솔에서 "EC2 서비스 > 인스턴스 > 인스턴스 시작" 메뉴를 선택하여 EC2 인스턴스를 생성할 수 있습니다.

이름 및 태그와 인스턴스 유형은 이전과 동일하므로 생략하겠습니다.

 

 

 배스천 서버와 동일한 Key를 사용해도 되지만 새로 생성하여 관리하는 편이 안전하므로 키 페어를 새로 생성해줍니다.

 

 

 같은 VPC 내의 인스턴스만 접근이 허용되어야 하므로 private subnet을 지정해주고, 퍼블릭 IP 자동 할당 옵션은 비활성화 합니다. 퍼블릭 IP를 할당해주어도 private subnet에 위치해있으면 해당 IP로 인스턴스 접속이 되지 않습니다.

 보안 그룹은 배스천 서버만 허용하도록 합니다. 인바운드 보안 그룹 설정에서 TCP 프로토콜, 22 포트를 배스천 서버의 IP 또는 배스천 서버에 등록된 보안 그룹에 대해 허용합니다. 보안 그룹에 대해 설정해두면 해당 보안 그룹을 사용하는 모든 인스턴스에 대해 일괄 적용됩니다.

 

 

 인스턴스 요약에서 퍼블릭 IP 비활성화 처리를 하여 퍼블릭 IP 주소가 할당되지 않은 것을 확인할 수 있습니다. 프라이빗 IP 주소를 통해 같은 VPC 내의 인스턴스에서만 접근이 허용됩니다.

2. SSH 터미널 접속

EC2 인스턴스를 생성했으니 내 로컬 PC에서 배스천 서버를 통해 프라이빗 인스턴스에 접근을 해봅시다!

* 로컬 PC는 Mac OS를 기준으로 작성되었습니다.

 

2-1. 로컬PC -> 배스천 서버 -> 프라이빗 EC2로 순차적 접근

 

로컬 PC에서 배스천 서버로, 배스천 서버에서 프라이빗 EC2로 순서대로 ssh 접속을 진행합니다.

 

우선 배스천 서버에서 프라이빗 EC2로의 접근을 위해서는 위에서 새로 생성한 키 페어가 배스천 서버에 위치해야 합니다.

ssh 원격 접속 프로토콜을 기반으로 하는 scp를 통해 로컬PC에 위치한 키 페어를 배스천 서버로 이동시켜줍니다.

> scp -i {배스천서버 키 페어 경로} {프라이빗서버 키 페어 로컬 경로} {배스천서버 EC2 유저}@{배스천서버 퍼블릭 IP}:{이동시킬 원격 경로}
> scp -i ~/.ssh/bastion-key.pem ~/.ssh/web-application-key.pem ec2-user@43.***.***.***:~/.ssh

위 명령어가 정상적으로 수행되었다면 배스천서버의 ~/.ssh 경로에 web-application-key.pem 파일이 복사됩니다.

 

 

이제 배스천 서버로 접속 후 프라이빗 EC2 서버로 접속을 진행합니다.

> ssh -i {배스천서버 키 페어 경로} {EC2 유저이름}@{배스천서버 퍼블릭 IP 주소}

 

> ssh -i ~/.ssh/bastion-key.pem ec2-user@43.***.***.***

정상적으로 배스천 서버의 터미널에 접속이 완료 되면 

> ssh -i {배스천 서버 내 프라이빗 서버 키 페어 경로} {EC2 유저이름}@{프라이빗 EC2의 프라이빗 IP 주소}
ssh -i ~/.ssh/web-application-key.pem ec2-user@172.20.134.4

 

 

2-2. SSH 포트 포워딩(터널링)을 통해 접근

 

SSH 포트 포워딩을 통해 로컬PC의 포트 하나를 배스천 서버를 통해 프라이빗 EC2와 연결해둔 상태로 로컬 PC에서 바로 프라이빗 EC2로 접근할 수 있다. 

> ssh -i {배스천 서버 키 페어 경로} -N -L {연결할 로컬 포트 번호}:{프라이빗 EC2의 프라이빗 IP 주소}:22 {배스천 EC2 유저명}@{배스천 서버의 퍼블릭 IP}
> ssh -i ~/.ssh/bastion-key.pem -N -L 33322:172.20.134.4:22 ec2-user@43.***.***.***

포워딩을 진행한 터미널을 켜둔 상태로 새로운 터미널을 열어 로컬 포트를 통해 프라이빗 EC2에 접속합니다.

> ssh -i {프라이빗 EC2 키 페어 경로} -p {포워딩한 로컬 포트 번호} {프라이빗 EC2 유저}@localhost
> ssh -i ~/.ssh/web-application-key.pem -p 33322 ec2-user@localhost

 

 

다음 포스팅에서는 프라이빗 EC2가 외부 인터넷을 사용할 수 있는 환경을 위한 NAT Gateway 설정과 프라이빗 EC2와 로드밸런서 연결 설정에 대해 알아보겠습니다.

Comments