kkokkio - 프로젝트/트러블슈팅
DataGrip에서 RDS(MySQL)에 SSH 터널로 안전하게 접속하기
파란배개
2025. 6. 16. 09:29
AWS에서 RDS는 기본적으로 외부에 노출되지 않는다. 특히 Publicly Accessible = false인 RDS에 로컬 개발 환경에서 접속하려면 EC2 인스턴스를 중계로 사용하는 SSH 터널링 방식이 가장 안전하고 일반적인 접근법이다.
문제 개요
로컬에서 DataGrip을 사용하여 Amazon RDS(MySQL)에 접속하려 했지만 다음과 같은 문제에 부딪혔다.
- 보안 그룹에 내 IP를 허용했음에도 타임아웃 발생
- RDS 엔드포인트가 내부 VPC 전용으로 설정되어 있음
이 문제를 해결하기 위해 여러 방법을 검토했지만, 결국 EC2를 통한 SSH 터널링으로 해결했다.
왜 직접 접속이 안 되는가?
Amazon RDS는 다음과 같은 보안 정책을 기본으로 한다:
- Publicly Accessible이 false인 경우 외부에서 직접 접근 불가
- RDS가 속한 VPC 내 리소스만 접근 가능
- EC2는 VPC 내부라 접근 가능하지만, 로컬 환경은 외부 인터넷으로 간주됨
즉, VPC 외부에서는 RDS 엔드포인트로 직접 연결할 수 없으며, 내부 자원을 경유해야 한다.
SSH 터널링의 개념 및 설정
SSH 터널링은 다음과 같은 방식으로 동작한다:
- 로컬 PC에서 EC2로 SSH 연결을 맺고,
- 그 연결을 통해 로컬 포트와 RDS 엔드포인트를 포트 포워딩
터미널에서는 다음 명령어로 실행할 수 있다:
ssh -i your-key.pem -L 3307:<rds-endpoint>:3306 ec2-user@<ec2-public-ip>
이 명령은 "내 PC의 3307 포트 → EC2 → RDS의 3306 포트"로 연결을 만든다. 그러나 DataGrip은 이 과정을 자체적으로 UI를 통해 지원한다.
DataGrip을 통한 접속 구성
1. 사전 조건
- EC2에 접근 가능한 .pem 키 파일 보유
- EC2와 RDS는 같은 VPC/Subnet에 있어야 함
- 보안 그룹 설정:
- EC2: 포트 22(SSH) 허용 (내 IP)
- RDS: 포트 3306 허용 (소스로 EC2 보안 그룹 지정)
2. DataGrip 설정 방법
Connection 탭
- Host: your-db.xxxxxx.rds.amazonaws.com
- Port: 3306
- User: MySQL 사용자명
- Password: MySQL 비밀번호
SSH/SSL 탭
- ✅ Use SSH tunnel 체크
- Host: EC2 퍼블릭 IP
- Port: 22
- User: ec2-user 또는 ubuntu
- Private key file: ~/.ssh/your-key.pem