안녕하세요! 이전 포스팅에서 우리는 OCI에 WordPress 서버를 구축했었죠. 오늘은 이 WordPress 서버를 점프호스트(Jump Host)로 활용하여 프라이빗 서브넷에 있는 MySQL 서버에 접속하는 방법을 알아보겠습니다.
왜 점프호스트를 사용하나요?
프라이빗 서브넷의 MySQL에 접근하기 위한 방법은 여러 가지가 있습니다. 이전에 살펴본 Bastion 서비스도 좋은 방법이지만, 이미 퍼블릭 서브넷에 WordPress 서버가 있다면 이를 활용하는 것도 효율적인 방법입니다.
장점:
1.
추가 비용 없음 (기존 서버 활용)
2.
간단한 설정
3.
안정적인 접근 방식
4.
세션 시간 제한 없음
필요한 준비물
1.
2.
WordPress 서버 정보:
•
공인 IP 주소
•
SSH 키 파일
3.
MySQL 서버 정보:
•
프라이빗 IP 주소
•
데이터베이스 접속 정보
단계별 설정 방법
1. PuTTY 세션 생성
1.
PuTTY 실행
2.
Session 설정:
•
Host Name: WordPress 서버의 공인 IP
•
Port: 22
•
Connection type: SSH
2. SSH 키 설정
1.
Connection > SSH > Auth > Credentials로 이동
2.
Private key file for authentication에서 WordPress 서버 접속용 프라이빗 키 선택
•
PPK 형식이 아니라면 PuTTYgen으로 변환 필요
3. 터널링 설정
1.
Connection > SSH > Tunnels로 이동
2.
다음 정보 입력:
•
Source port: 3306 (로컬에서 사용할 포트)
•
Destination: MySQL_프라이빗_IP:3306
•
예: 10.0.2.162:3306
3.
Add 버튼 클릭
4. 세션 저장
1.
Session 메뉴로 돌아가기
2.
Saved Sessions에 적절한 이름 입력 (예: WordPress-MySQL-Tunnel)
3.
Save 버튼 클릭
5. MySQL 연결
터널링된 세션이 열린 상태에서 MySQL 클라이언트로 접속:
mysql -h 127.0.0.1 -P 3306 -u admin -p
Shell
복사
보안 고려사항
1.
SSH 키 관리
•
프라이빗 키는 안전한 위치에 보관
•
키 파일 권한 설정 확인
2.
방화벽 설정
•
WordPress 서버의 보안그룹에서 SSH(22) 포트는 필요한 IP에서만 접속 가능하도록 설정
•
MySQL 서버의 보안그룹에서 3306 포트는 WordPress 서버의 프라이빗 IP에서만 접속 가능하도록 설정
3.
접속 모니터링
•
SSH 접속 로그 정기적 검토
•
비정상 접근 시도 모니터링
운영 팁
1.
세션 관리
•
사용하지 않는 세션은 바로 종료
•
자동 재연결 설정 활용 (Connection > SSH > Keepalives)
2.
문제 해결
•
연결 실패 시 먼저 WordPress 서버 SSH 직접 접속 테스트
•
MySQL 서버 리스닝 포트 확인: netstat -an | grep 3306
•
보안그룹 설정 확인
결론
기존 WordPress 서버를 활용함으로써 추가 비용 없이 안전한 데이터베이스 관리가 가능해집니다.
특히 개발 환경에서 데이터베이스를 자주 관리해야 하는 경우, 이 방법을 추천드립니다. Bastion 서비스와 달리 세션 시간 제한이 없어 장시간 작업에도 적합하죠.
다음 포스팅에서는 이 터널링을 활용한 데이터베이스 백업 자동화 방법에 대해 다뤄보도록 하겠습니다!
#MySQL #PuTTY #SSH #Tunneling #Database #OCI #WordPress
궁금하신 점이나 추가 의견이 있으시다면 댓글로 남겨주세요! 



