상세 컨텐츠

본문 제목

AWS SSH 터널링이란? Putty와 MySQL Workbench를 활용한 터널링 설정 방법

개발기록/인프라관련

by 언코더 2025. 3. 20. 20:04

본문

728x90
반응형

이직을 했다. 아주 잘 했다. 기쁘다. 

 

새로운 회사에 오고 DB를 사용하기위해 터널링을 사용한다는 이야기를 들었다. 

AWS에서 EC2 인스턴스를 설정하고, pem 키를 이용해 VS Code의 SSH 설정을 통해 서버에 접속하는 것은 익숙하다. 

하지만 SSH 터널링이라는 개념을 처음 접했다. 특히, Putty를 사용해 터널링을 설정하고 MySQL Workbench에서 원격 DB에 접속하는 것을 보며 "왜 IP를 127.0.0.1로 설정하지?"라는 의문이 들었다. 

 

대략적인 설명을 들었고 지금은 아주 잘 사용하고있다.
 

기록을 남겨두어야 겠다 싶어 조사를 통해 SSH 터널링의 개념과 사용법을 정리해본다.  물론 지피티가 다쓴다. 


SSH 터널링이란?

SSH 터널링(Secure Shell Tunneling)은 원격 서버의 특정 포트를 로컬에서 실행하는 것처럼 사용할 수 있도록 하는 기술입니다.
즉, 로컬 환경에서 보안이 필요한 서비스(예: 데이터베이스, 웹 애플리케이션 등)에 안전하게 접근할 수 있도록 해줍니다.

SSH 터널링을 사용하는 이유

  1. 보안 강화
    • 외부에서 직접 DB나 서비스에 접근하면 보안 문제가 발생할 수 있음.
    • SSH 터널링을 사용하면 모든 데이터가 SSH를 통해 암호화되므로 보안이 향상됨.

      여기가 중요하다 예전에는 DB를 터널링 없이 직접 외부에서 접근할수 있게 했었다.  충격적이게도.. 그랬다.. 몰랐으니까. 지금이라도 알아서 얼마나 다행인가 ㅎㄷㄷ 
  2. 방화벽 우회 및 네트워크 제한 해결
    • 회사나 클라우드 환경에서는 DB에 직접 접근하지 못하도록 차단하는 경우가 많음.
    • 터널링을 이용하면 SSH를 통해 내 PC에서 원격 DB에 접속하는 것처럼 사용할 수 있음.
  3. 로컬 환경에서 원격 서비스 사용
    • MySQL Workbench에서 127.0.0.1:3306을 입력하면, 원격 DB에 연결 가능.
    • 원격 서버의 서비스를 마치 로컬에서 실행하는 것처럼 사용 가능.

Putty를 활용한 SSH 터널링 설정 방법

Windows에서 SSH 터널링을 설정하는 가장 일반적인 방법 중 하나는 Putty를 이용하는 것입니다.

1. Putty 실행 후 SSH 접속 설정

  • Host Name: EC2 퍼블릭 IP 입력 (예: ec2-xx-xx-xx-xx.compute.amazonaws.com)
  • Port: 22
  • Connection → SSH → Auth → Private Key file for authentication
    • pem 키를 .ppk로 변환 후 선택 (Puttygen으로 변환 가능)

2. SSH 터널링(Local Port Forwarding) 설정

  1. Putty에서 Connection → SSH → Tunnels 메뉴 이동
  2. Source Port: 3306 입력
  3. Destination: 127.0.0.1:3306 입력
  4. Local 선택 후 Add 버튼 클릭
  5. Open 버튼을 눌러 SSH 접속

이제 터널링이 설정되었습니다. 이 설정을 통해 127.0.0.1:3306으로 접근하면, 실제로는 원격 서버의 MySQL 포트(3306)로 연결됩니다.

 

반응형

3. MySQL Workbench에서 DB 연결 설정

  • Hostname: 127.0.0.1
  • Port: 3306
  • Username: 원격 DB의 사용자명
  • Password: DB 비밀번호 입력
  • Test Connection을 눌러 연결 확인

728x90

VS Code에서 SSH 터널링 설정하기

Putty 없이도 VS Code에서 SSH 터널링을 설정할 수 있습니다.
VS Code에서 SSH를 설정하는 ~/.ssh/config 파일을 수정하면 터널링을 자동화할 수 있습니다.

1. SSH Config 파일 수정

터미널에서 다음 명령어로 SSH 설정 파일을 엽니다.

nano ~/.ssh/config

아래 내용을 추가합니다.

Host my-ec2
    HostName ec2-xx-xx-xx-xx.compute.amazonaws.com
    User ec2-user
    IdentityFile ~/.ssh/key.pem
    LocalForward 3306 127.0.0.1:3306

2. SSH 접속 및 MySQL Workbench 설정

  • 터미널에서 ssh my-ec2 실행
  • MySQL Workbench에서 127.0.0.1:3306으로 DB 연결
  • 터널링을 통한 원격 DB 접속이 완료됩니다!

VSC의 SSH 접속과 SSH 터널링의 차이점

비교 항목 VS Code에서 SSH 접속 SSH 터널링

목적 원격 서버에서 직접 개발 및 관리 (파일 수정, 터미널 사용) 원격 서비스(DB, 웹 서버)를 로컬에서 실행하는 것처럼 사용
접속 방식 ssh -i key.pem user@ec2-ip ssh -L 3306:127.0.0.1:3306 user@ec2-ip
사용 도구 VS Code SSH 확장 기능 Putty 또는 CLI에서 ssh -L 옵션 사용
로컬 사용 여부 원격 서버에서 직접 작업 로컬에서 원격 DB를 사용하는 것처럼 설정

VSC의 SSH 접속은 원격 서버에서 직접 작업하는 것이고, SSH 터널링은 원격 서버의 특정 서비스를 로컬에서 실행하는 것처럼 사용할 수 있게 해줍니다.


결론

💡 SSH 터널링을 활용하면 원격 서버의 DB를 로컬에서 실행하는 것처럼 사용할 수 있습니다.
💡 Putty 또는 VS Code의 SSH 설정을 통해 터널링을 설정할 수 있으며, MySQL Workbench에서 127.0.0.1:3306으로 원격 DB에 안전하게 접속할 수 있습니다.
💡 VSC에서 SSH 접속과 SSH 터널링은 비슷하지만 목적이 다릅니다. SSH 터널링은 특정 서비스(DB, 웹 서버 등)를 로컬에서 사용할 때 유용합니다.


📌 추가 참고 자료

쓰는법 알려주는 블로그도 있더라. 

https://blog.naver.com/baekmg1988/221621075905


🔖 관련 해시태그

#AWS #EC2 #SSH #터널링 #MySQL #MySQLWorkbench #보안 #포트포워딩 #VSCode #Putty #클라우드 #개발자팁 #네트워크 #보안설정

728x90
반응형