AWS

bastion host와 private EC2 만들기

MDanderson 2023. 7. 20. 07:27

Bastion host 인스턴스 만들기

지역은 서울인지 꼭 확인

1. 인스턴스 시작버튼을 누른다.

2. name란에 이름을 작성 ex) bastion-host

3. 아마존리눅스 선택 ,  architecture: 64-bit(Arm) 을 선택

4.Free tier 설정을  Amazon Linux2023 AMI 으로 되어있는지 확인

5. t4g.small 로 선택 (프리티어)

 

6. key pair 는 기존에 있는거 쓰거나  bastion-host-key 를 만듦   RSA  , .pem을 선택

 

7.네트워크세팅에서는  Allow SSH traffic from 을 My IP로 선택

8.용량은 꽁짜로 쓸수있는게 30기가니까 30으로선택

 

 

bastion host에 접속해보자. git bash에서 

ssh -i "./bastion-host-key.pem" ec2-user@[bastion host의 public DNS주소]

 

 

 

 

private EC2 인스턴스 만들기

1.인스턴스 시작버튼 클릭

name은 deploy-test로 설정

그외 다 동일 

key pair 는 deploy-test로 또하나 만들어줌 ( 방법은 위와 동일)

allow ssh 는 my ip만 승인하게 (위와 동일)

 

edit 버튼 클릭 -> vpc확인한다.  망분리  VPC가 172.31.xx.xxx 인데 vpc를 통해서 글로벌네트워크안에 같이 묶어놨는데 외부에 공개된건 bastion host. 내부망을쓴 private ec2는 내부에 존재 (private망(vpc)이 bastion host를  포함하고 있어야함)

 

auto -assign public ip는 disable선택

 

마지막으로 최대사용할수있는 30기가로 선택

perm키 만들고 다운로드받아놔야한다.

완료

 

인스턴스를 확인해보자 ,  private ec2는 public ipv4가 있으면 안된다.

 

받은 perm키를 bastion host로 옮겨줘야한다

scp -i "./bastion-host-key.pem" deploy-test-key.pem ec2-user@[public ipv4 DNS주소]:~/

 

 

전송이 됐으면 권한을 준다.

chmod 400 deploy-test-key.pem 

 

 

 

@bastion host에서  private ec2에 접속하자

ssh -i deploy-test.pem ec2-user@[private ec2 망의 private ip주소]

 

접속이안될경우, 인스턴스의 inbound규칙을 안열어서 그렇다

인스턴스를 생성할때 myIP만 22를 허용해줬는데

ssh프로토콜이 포트22를 사용한다

 

private ec2 가서 inbound규칙 위에 security group을 클릭

bastion host의 public ipv4/32를 private ec2 inbound규칙에 적는다.

32란 서브넷마스크 32개 다 켰다는 의미 = > public ipv4가 아니면받지않겠다는 의미

 

추가로 양방향통신을 위해서, private ec2에서 넘어오는 데이터를 bastion host를 거치게 하기위해 , 

bastion host의 inbound규칙에   private ec2의 private ipv4/32 를 적는다.

 

vpc설정을 했는데도 서브넷이 안먹을수도있다. 양쪽을 다 설정했는데도 통신이 안되면

자체적으로 서브넷설정이 안되어있는것이다 그럴때는  private ec2에서 인바운드 규칙에  172.31.0.0/16을 열면된다.