원격 MySQL 데이터베이스에 보안 위험 없이 접근할 수 있는 가장 간단하고 확실한 방법 중 하나를 소개합니다.
왜 SSH 터널을 사용해야 할까요?
요즘은 모든 플랫폼에서 사용할 수 있는 다양한 MySQL 프런트엔드 도구가 출시되어 있습니다. 일부는 웹 기반으로 MySQL 서버 자체에 설치되지만, 나머지는 로컬 노트북이나 데스크톱 컴퓨터에 설치해서 사용하는 클라이언트 방식입니다.
만약 로컬 네트워크 외부 어딘가에 MySQL 서버가 운영 중이라면, 데스크톱용 MySQL 클라이언트와 서버를 연결하기 위해 인터넷을 통한 원격 접속이 필요합니다. 이때 편의를 위해 MySQL 서버를 인터넷에 그대로 개방하는 것은 매우 위험한 선택입니다. 외부 공격과 무단 접근에 그대로 노출될 수 있기 때문입니다. 대신, 보안을 크게 해치지 않으면서도 안전하게 접속할 수 있는 훨씬 더 좋은 방법이 바로 SSH 터널입니다.
1단계: SSH 터널 생성
SSH 터널 기반 연결은 두 단계로 진행됩니다. 첫 번째 단계는 내 컴퓨터에서 MySQL 서버까지 암호화된 SSH 터널을 만들고, 모든 데이터를 해당 터널을 통해 주고받도록 구성하는 것입니다.
다음 명령어를 실행하면 remoteserver.net 서버에서 내 로컬 컴퓨터로 이어지는 SSH 터널이 생성됩니다. 이 명령은 원격 서버의 3306번 포트(MySQL 기본 포트)로 들어오고 나가는 트래픽을 로컬 컴퓨터의 6666번 포트로 전달합니다.
ssh user@remoteserver.net -L 6666:localhost:3306명령어 옵션 설명
위 명령어에서 user@remoteserver.net 부분은 실제 사용 중인 원격 서버의 계정 정보로 교체하고, -L 6666 부분은 로컬 머신에서 MySQL에 접속할 때 사용할 포트 번호로 변경하면 됩니다. 이미 6666번 포트를 다른 용도로 사용 중이라면 7777 같은 다른 빈 포트를 지정해도 무방합니다.
명령어를 실행하면 원격 서버에 로그인할 사용자 비밀번호 입력을 요구받습니다. 비밀번호를 올바르게 입력하면 SSH 터널이 정상적으로 구축되어 백그라운드에서 동작하기 시작합니다.
2단계: MySQL 클라이언트로 원격 서버 접속
이제 즐겨 사용하는 MySQL 클라이언트를 실행하고, 방금 만든 SSH 터널을 통해 원격 MySQL 서버에 연결합니다. 예를 들어 터널을 6666번 포트에 설정했다면, 클라이언트에서 아래와 같이 접속 정보를 입력합니다.
- Host(호스트): 127.0.0.1
- Port(포트): 6666
데이터베이스 인증 정보(사용자 이름과 비밀번호)는 원격 서버에서 평소 사용하던 MySQL 계정을 그대로 입력하면 됩니다. 여기서 주목할 점은, 실제로는 원격 서버에 접속하는 것이지만 클라이언트 입장에서는 로컬 호스트(127.0.0.1)에 연결하는 것처럼 보인다는 사실입니다. 모든 트래픽이 SSH 터널을 통해 암호화되어 전달되기 때문입니다.
접속 완료 및 마무리
모든 과정을 올바르게 따라 했다면, MySQL 클라이언트에서 원격 데이터베이스 목록을 확인할 수 있을 것입니다. 이제 안전하게 암호화된 원격 연결 환경에서 데이터베이스 작업을 진행할 수 있습니다.
마지막으로 한 가지만 기억하세요. 작업을 마친 후에는 처음에 열어 둔 SSH 세션을 종료하여 터널을 반드시 닫아야 합니다. 불필요하게 열려 있는 터널은 잠재적인 보안 취약점이 될 수 있으므로, 사용이 끝나면 즉시 종료하는 습관을 들이는 것이 좋습니다.