본문 바로가기
Infra, Cloud/AWS

[AWS] Bastion 호스트로 SSH 접속하기

by J4J 2022. 10. 31.
300x250
반응형

안녕하세요. J4J입니다.

 

이번 포스팅은 Bastion 호스트로 SSH 접속하는 방법에 대해 적어보는 시간을 가져보려고 합니다.

 

 

 

Bastion 호스트 사용 이유

 

Bastion 호스트는 내부 네트워크 영역과 외부 네트워크 영역을 서로 연결할 수 있도록 도와주는 호스트 서버입니다.

 

Bastion 호스트를 활용하는 대표적인 케이스가 AWS에서 Private Subnet을 사용하는 경우입니다.

 

Private Subnet을 사용하면 Subnet 네트워크 영역을 외부와 구분하여 보안 위협을 줄여주지만 반대로 개발 PC에서 인스턴스 서버에 SSH로 접근할 수 없는 등의 문제점도 발생시킵니다.

 

이런 경우 Bastion 호스트를 생성하여 Private Subnet과 외부 영역을 서로 연결함으로 써 Private Subnet 사용의 문제점들을 일부 해결해줄 수 있습니다.

 

 

 

Bastion 호스트로 SSH 접속 방법

 

[ 1. VPC 접속 ]

 

VPC 접속

 

 

 

[ 2. 보안 그룹 생성 ]

 

좌측 보안 그룹 메뉴를 선택한 뒤 우측에 있는 보안 그룹 생성 버튼을 클릭해줍니다.

 

보안 그룹 생성

 

 

 

[ 3. 보안 그룹 정보 입력 ]

 

먼저 bastion 호스트 서버에서 사용할 보안 그룹을 다음과 같이 생성해줍니다.

 

여기서 SSH 오픈 범위는 상황에 맞게 특정 네트워크에서만 접근할 수 있도록 조절해주시면 됩니다.

 

bastion 호스트 보안 그룹

 

 

 

이번엔 Private Subnet에 연결되는 인스턴스를 위한 보안 그룹을 다음과 같이 생성해줍니다.

 

여기서 SSH 오픈 범위는 위에서 만든 bastion 호스트 보안 그룹으로만 설정하시면 됩니다.

 

private 호스트 보안 그룹

 

 

 

[ 4. EC2 접속 ]

 

EC2 접속

 

 

반응형

 

 

[ 5. 인스턴스 시작 ]

 

좌측 인스턴스 메뉴를 선택한 뒤 우측에 있는 인스턴스 시작 버튼을 클릭해줍니다.

 

인스턴스 시작

 

 

 

[ 6. 인스턴스 정보 입력 ]

 

인스턴스는 Private Subnet에 속하는 인스턴스와 bastion 호스트로 사용될 인스턴스 각각 1개씩 만들겠습니다.

 

먼저 Private Subnet 인스턴스를 위한 정보들입니다.

 

이름을 자유롭게 작성하고 AMI Linux로 편하신 거 아무거나 선택해주시면 됩니다.

 

Private 인스턴스 정보 입력 - 1

 

 

 

인스턴스 유형 자유, 키 페어는 RSA와 .pem으로 선택해서 생성해줍니다.

 

VPC는 원하는 걸로 선택해주시고 서브넷은 Private Subnet, 퍼블릭 IP는 따로 필요 없기 때문에 할당하지 않습니다.

 

여기서 Private Subnet 관련 설정이 필요하신 분은 [AWS] Private Subnet과 NAT Gateway 사용하기를 참고 부탁드립니다.

 

 

 

마지막으로 보안 그룹은 위에서 만든 private 보안 그룹을 선택해줍니다.

 

Private 인스턴스 정보 입력 - 2

 

 

 

이번엔 bastion 호스트 인스턴스 정보 입니다.

 

똑같이 인스턴스 시작 버튼을 클릭한 뒤 이름을 입력하고 AMI를 선택해줍니다.

 

bastion 인스턴스 정보 입력 - 1

 

 

728x90

 

 

나머지도 동일하게 인스턴스 유형 자유, 키 페어는 RSA와 .pem으로 선택해서 생성해줍니다.

 

VPC는 원하는 걸로 선택해주시고 서브넷은 인터넷 네트워크가 연결된 Public Subnet, 퍼블릭 IP는 필요하기 때문에 할당해줍니다.

 

마지막으로 보안 그룹은 위에서 만든 bastion 보안 그룹을 선택해줍니다.

 

bastion 인스턴스 정보 입력 - 2

 

 

 

[ 7. bastion 인스턴스에 EIP 할당 ]

 

bastion 인스턴스에만 탄력적 IP 주소를 생성하여 할당해줘야 합니다.

 

관련 내용은 [AWS] EC2 고정 IP 사용하기를 참고 부탁드립니다.

 

 

 

[ 8. putty 접속 ]

 

putty를 이용해서 bastion 인스턴스에 ssh 접근할 수 있어야 합니다..

 

관련 내용은 [AWS] Putty 이용하여 EC2 인스턴스 SSH 접속하기를 참고 부탁드립니다.

 

 

 

[ 9. Private Subnet 인스턴스 key bastion 인스턴스로 이동 ]

 

filezila를 이용해서 키 파일을 서버로 전달할 수 있어야 합니다.

 

filezila 사용 방법은 [AWS] Filezilla 이용하여 EC2 인스턴스 SFTP 접속하기를 참고 부탁드립니다.

 

filezila로 연결이 되었다면 다음과 같이 Private Subnet 인스턴스의 .pem 키파일을 옮겨줍니다.

 

Private Subnet 키파일 이동

 

 

 

[ 10. testKey를 이용한 Private Subnet 인스턴스 접속 ]

 

bastion 인스턴스에 ssh로 접속한 상태에서 key파일이 위치한 /home/ubuntu로 이동합니다.

 

그리고 다음 명령어를 이용하여 key파일 권한을 수정합니다.

 

$ chmod 400 {키파일} // ex) chmod 400 testKey.pem

 

 

 

권한 수정이 완료되었다면 다음 명령어를 이용하여 Private Subnet 인스턴스에 접속합니다.

 

$ ssh -i "{키파일}" {접속계정}@{프라이빗IP주소} // ex) ssh -i "testKey.pem" ubuntu@172.31.~~.~~

 

 

 

참고로 여기서 프라이빗 IP주소는 다음과 같이 인스턴스 정보에서 확인 가능합니다.

 

프라이빗 IP주소 확인

 

 

 

아무 문제가 발생되지 않는다면 private 인스턴스에 정상적으로 접근되는 걸 확인하실 수 있습니다.

 

 

 

 

 

 

이상으로 Bastion 호스트로 SSH 접속하는 방법에 대해 간단하게 알아보는 시간이었습니다.

 

읽어주셔서 감사합니다.

 

 

 

728x90
반응형

댓글