aws 상에서 보안을 위해 그림과 같이 실제 사용하는 인스턴스는 private subnet에 숨기고, public에 bastion host 라는 걸 둬서 접근하는 방식이 있다.
이렇게 하면 관리할 구멍을 하나만 만들고 그 외에는 접근이 원천적으로 불가능해지기 때문에 보안적으로는 좋아지긴 하는데… 그 내부로 접근하기가 매우 귀찮아지는 단점이 있다.
결국 private subnet 안에 있는 인스턴스에 접근하려면 배스쳔호스트를 거쳐야 하는데,
매번 그 명령어를 까먹어서 기록해둔다.
방법은 아래와 같다
1.타겟의 22번 포트를 배스천호스트를 통해 로컬(내컴퓨터)의 33322 포트로 포워딩
1 | ssh -i "bastion-host-key.pem" -N -L 33322:{target-private-ip}:22 ec2-user@{bastion-host-public-ip} |
(주의) 새 터미널을 띄운 후
2.로컬호스트의 33322포트를 이용해 타겟으로 접속
1 | ssh -i "target-key.pem" -p 33322 {target-user(대체로 ec2-user)}@localhost |
타겟의 22번 포트를 배스천호스트를 통해 로컬(내컴퓨터)의 33322 포트로 포워딩
(용어정리)
bastion-host-key.pem
: bastion host에 접근할 수 있는 key,target-private-ip
: 최종 접속할 인스턴스의 프라이빗 ip,target-key.pem
: bastion host의 key,bastion-host-public-ip
: 말 그대로 bastion host의 퍼블릭 ip
33322포트는 임의로 정한것이며 아무거나 남는 포트를 정하면 된다.
끝.