SSH 포트포워딩을 이용하여 Bastion Host(퍼블릭 서브넷)에서
웹 서버(프라이빗 서브넷)에 접속한 뒤 DB서버(프라이빗 서브넷)에 접근하기
《사전지식》
포트포워딩(=SSH터널링)이란?
포트 포워딩은 컴퓨터나 네트워크 장치가 로컬 네트워크 외부의 다른 장치에 액세스 권한을 부여하여 컴퓨터의 IP나 포트 조합에 대한 데이터 트래픽 정보를 수집하고 다른 IP 주소나 포트로 경로를 재설정하는 것이다. 쉽게 말해 데이터가 특정 컴퓨터의 IP 주소로 전송되는 도중에 해당 데이터를 가로채서 전혀 다른 위치로 리디렉션하는 프로세스이다.
현재 사용자는 웹 서버에서 80번 포트로 바인딩 된 서비스에 접근하려고 하지만 Web Server의 보안그룹에서 SSH(22번 포트)를 제외한 나머지 포트들은 차단하고 있기 때문에 Bastion Host에서 웹 서버로 접근해야 한다.
이를 위해서는 웹 서버의 22번 포트를 로컬의 33321(임의의 포트)포트와 매핑하여 로컬에서 33321포트로 웹 서버에 접속할 수 있게 설정한다.
STEP1. 타겟의 22번 포트를 배스천호스트를 통해 로컬(내컴퓨터)의 33321 포트로 포워딩하기
Bastion Host에 접속할 수 있는 키 페어가 있는 주소에서 명령을 입력한다
(주의) 포트번호는 아무 번호나 괜찮지만 접속이 정상적으로 종료되지 않을 경우 같은 포트번호로 접속이 안될 수도 있다
(새로운 터미널 창에서) 로컬 33321포트로 웹 서버에 접속(웹 서버에 접속할 수 있는 키페어가 있는 주소에서 명령 입력)
새로운 터미널 창에서 아래의 명령어를 입력하면 Bastion Host 서버가 아닌 웹 서버로 바로 접속이 될 것이다
STEP2. 웹 서버에서 DB서버로 접속하기
현재 웹 서버에 접속되어 있는 상태에서 아래의 MySQL 클라이언트로 데이터베이스에 접속해보자
만약 "command not found: mysql" 이라는 오류가 발생한다면 MySQL 클라이언트가 설치되어 있지 않은 것이므로
아래의 명령어를 입력하고 설치한다
sudo yum -y install mysql
MySQL의 포트번호는 보통 3306으로 설정되어 있고, 임의로 변경해서 사용할 수도 있다(DB엔진에 따라 포트번호는 상이하다)
아래의 명령을 입력하면 패스워드를 입력하는 창이 뜨는데 DB생성 시 설정했던 비밀번호를 입력한다
정상적으로 DB서버에 접속한 것을 확인할 수 있다
mysql -h 데이터베이스 엔드포인트 -P 3306 -u admin -p
STEP 3. PuTTY를 이용한 접속
puTTY를 설치하면 생기는 "pageant"를 클릭한다
"AddKey"를 눌러 Bastion Host의 키페어를 선택하여 담는다
"pageant"을 종료하고 "puTTY"로 들어와서 좌측 [Seesion] 메뉴를 클릭한다
"Host Name"에는 "ec2-user@Bastion Host의 퍼블릭IP"를 입력한다
좌측 [SSH]메뉴 왼쪽에 +버튼을 누르면 드롭다운되는 메뉴들 중 [Auth]를 클릭한다
"Allow agent forwarding"박스를 체크한 다음 [Browse...]를 클릭하여 웹 서버의 키페어를 선택한다
설정을 완료하고 [open]을 누르면 Bastion Host에 접속이 될 것이다
Bastion Host에서 접속이 된 상태에서 아래의 명령어를 입력하면 웹 서버에 접속할 수 있다
ssh -i "키페어이름.ppk" ec2-user@웹서버IP
웹 서버에서 mysql 클라이언트로 데이터베이스에 접속한다
mysql -h 데이터베이스 엔드포인트 -P 3306 -u admin -p
'AWS' 카테고리의 다른 글
AWS CLI sync 명령을 사용하여 로컬에서 S3로 데이터를 전송 (0) | 2021.03.09 |
---|---|
Amazon Route 53을 DNS 서비스로 구성 + ALB 구축 (0) | 2021.03.08 |
EC2에 탄력적IP 연결 (0) | 2021.03.02 |
Quicksight를 활용한 공공데이터 시각화 및 인터랙티브 분석 (0) | 2021.02.22 |
ECS 컨테이너 구축 (0) | 2021.02.22 |