-
[AWS] bastion host을 통해 private 서버 접근하기 - linux클라우드/AWS 2023. 4. 22. 23:24
ssh (secure shell)
- 원격 터미널 접속을 위한 보안 프로토콜
- ssh client(내 서버)가 ssh server(원격 서버)과 데이터 통신을 하기 위해선 암호화된 방식인 ssh 프로토콜을 사용하게 됨!
- mac, linux는 ssh client가 기본적으로 설치되어 있지만, window같은 경우는 ssh client가 없기 때문에 직접 설치를 해줘야함 -> 그래서 putty를 설치함
ssh 터널링(port forwarding)
- 22번 포트를 이용하여 서버와 클라이언트에 일종의 터널을 만들고 통신을 함
- 22번 포트를 이용하여 임의의 포트번호로 통신이 가능하게 하는 것
이제 bastion host를 통해서 private한 서버에 접근해보자
private server는 linux로 구성을 했고, window로도 다뤄볼 예정이다
1. vpc 구성
- public subnet -> bastion host server를 구성하고, private subnet-> target server를 구성
- bastion host는 public subnet1, target server는 private subnet1에 위치
2. bastion host 생성(linux)
- public subnet에 위치한 서버
- bastion host는 ssh server 역할을 하기 때문에 로컬 pc대신 안전하게 타겟 서버에 연결되도록 도와줌
- bastion host의 키페어 생성 : bastionhostkey
- ssh 접속시 사용되는 port인 22번만 내 ip주소에 한정해서 열어주기
3. target server 생성(linux)
- private subnet에 위치한 private한 서버
- target server의 키페어 생성 : targetKey
- target server는 외부로 노출되면 안되기 때문에 오직 bastionhost의 보안그룹에 대해서만 인바운드 규칙을 설정해주어야함
=> 타겟서버는 bastion host 서버를 통해서만 데이터 통신이 가능함
4. bastion host 서버 실행
- ppk 키 업로드
- hostname, port 설정 -> 22번으로 열어줘야함
- 터널링 설정 : localhost에서 타켓서버로 접속할 수 있게 터널링을 설정하는것
- source port : clientPC에서 터널연결에 사용할 임의의 포트번호, 즉 로컬에서 접속할 포트를 설정해두는것
- destination port : localhost port로 접근하면 타켓서버로 이동시켜줌, 즉 타켓 서버의 ip와 port번호를 입력
5. localhost 서버 실행(client pc)
- 타겟 서버의 ppk 키 등록(내 pc가 가지고 있어야함)
- 내 pc의 localhost와 로컬에서 접속할 포트번호 지정(위에 bastion host에서 터널링 설정에서 사용했던 포트번호랑 일치해야 통신이 완료됨)
6. bastion host를 미리 실행한 상태에서 localhost에서 타켓 서버에 접속하자
- 오른쪽창의 ip를 보면 타켓서버의 private ip주소로 잘 접근한것을 확인할 수 있음
- 만약 bastion host가 끊기면 타겟서버도 끊김
bastionhost 관리자 모드 실행
- bastionhost에서 타겟서버로 접속을 하려고 시도하면 타겟서버에 대한 키(public key)가 없기 때문에 접속불가
-> pageant를 이용해서 bastion host에서 타겟서버에 접근할 수 있음
- bastion host 키 설정시, allow forwading 체크하기
- pageant를 이용해서 관리자는 ssh 서버에 접속할 수 있음
- pageant에 타겟서버의 키를 등록하고 다시 bastion host를 실행 -> 접근됨
+ mac 버전
- mac은 이미 ssh client가 설치되어 있기 때문에 기본 터미널에서 실행해도 됨
chmod 400 pem파일명
- window와 똑같음
- bastion host를 실행하면서 터널링을 구성해 줌
- 소스port(localhost port):타겟서버ip:목적지port 사용자id@bastion서버ip
ssh -i pem파일경로/pem파일명 -L 소스Port:DNS경로:목적지Port 사용자id@Bastion서버ip
http://devstory.ibksplatform.com/2017/08/aws-bastion-host-ssh.html
'클라우드 > AWS' 카테고리의 다른 글
[AWS] EFS / S3 / EFS (0) 2023.05.08 [AWS] Route53 + Application LoadBalancer를 이용한 트래픽 분산 (0) 2023.05.01 [AWS] VPC 구성의 기본 개념 (0) 2023.03.01 [AWS] Lambda - zip 파일로 코드 올리기 (0) 2023.02.23 [AWS] ec2에서 S3로 파일 업로드 (0) 2022.05.16