bastion host와 private EC2 만들기
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을 열면된다.