본문 바로가기

SSH 터널링(SSH Tunneling)이란?

@cojoop 2025. 6. 25. 10:14

사내 내부망에 접속해 개발 환경을 세팅하고 운영 서버에 반영하려면, 보안상의 이유로 SSH 터널링을 통해 접속해야 한다. 

그래서 DBeaver에서 운영 DB에 연결할 때도 SSH 터널링 설정을 활용해 접속하는 과정을 거쳤다.

 

처음엔 단순히 원격 접속이라고만 생각했지만, 그 원리가 궁금해졌다. ‘왜 꼭 SSH 터널링을 사용해야 할까?’, ‘단순 접속과 어떤 차이가 있을까?’

 

이번 포스팅에서는 이런 궁금증을 풀기 위해, SSH 터널링이란 무엇인지, 언제 왜 사용하는지 알아보려 한다.


SSH 터널링(SSH Tunneling)이란?

간단히 말하면, SSH 연결을 통해 데이터를 암호화하여 다른 목적지로 보내는 방법으로, 보안이 확보되지 않은 네트워크에서도 안전하게 데이터 통신을 할 수 있는 통로(터널)를 만드는 것이라고 할 수 있다.

 

터널링의 기본 구조

[클라이언트] <--- SSH 터널 ---> [SSH 서버] -----> [최종 목적지]
  • 클라이언트가 SSH 서버에 접속하면서 로컬 포트를 원격의 다른 서비스(ex. 데이터베이스)에 연결한다.
  • 이때 중간 경로는 모두 암호화되어 안전하다.

SSH 터널링 사용 방법

로컬 포워딩(Local Port Forwarding)

로컬 머신의 포트를 통해 원격 서버의 서비스에 접속하는 방식을 말한다.

ssh -L [로컬포트]:[목적지주소]:[목적지포트] [사용자명]@[SSH서버]

 

예시: 로컬에서 localhost:3306으로 접속하면, 원격 서버의 DB(db.internal:3306)에 연결하는 경우.

ssh -L 3306:db.internal:3306 user@remote-server

 

언제 사용하나요?

  • 원격 DB 서버가 방화벽에 막혀 직접 접속할 수 없을 때
  • 보안이 필요한 서비스(ex. HTTP, DB)를 안전하게 연결하고 싶을 때

 

원격 포워딩(Remote Port Forwarding)

원격 서버의 포트를 통해 로컬 서비스에 접속하게 하는 방식을 말한다.

ssh -R [원격포트]:[로컬주소]:[로컬포트] [사용자명]@[SSH서버]

 

예시: 원격 서버에서 localhost:8080으로 접속하면, 로컬의 웹서버(localhost:3000)에 연결하는 경우.

ssh -R 8080:localhost:3000 user@remote-server

 

언제 사용하나요?

  • 외부에서 내 로컬 개발 서버를 테스트하고자 할 때
  • 로컬 서버가 NAT/방화벽 뒤에 있어 직접 접근할 수 없을 때

 

다이나믹 포워딩(Dynamic Port Forwarding)

SOCKS 프록시 역할을 하며, 다양한 목적지로 트래픽 전달이 가능하다.

SOCKS (Socket Secure)는 클라이언트와 서버 사이에 중간에 위치해서, TCP 또는 UDP 트래픽을 프록시해주는 프로토콜.
ssh -D [로컬포트] [사용자명]@[SSH서버]

 

예시: 브라우저에서 프록시 설정을 통해 SSH 터널을 경유한 트래픽 전달

ssh -D 1080 user@remote-server

 

언제 사용하나요?

  • 공공 와이파이 등 불안정한 네트워크에서 안전하게 인터넷 사용
  • 지역 제한 웹사이트 우회 접속

SSH 터널링을 사용하는 이유

유형 방향 사용 예시
로컬 포워딩(-L) 로컬 → 원격 원격 DB 접속, 보안이 필요한 서비스 연결
원격 포워딩(-R) 원격→ 로컬 외부에서 로컬 웹서버 접근
다이나믹 포워딩(-D) SOCKS 프록시 공공 와이파이에서 안전한 브라우징, 지역 제한 우회

 

마무리

SSH 터널링을 단순한 원격 접속 도구로만 생각했지만, 이번에 정리하면서 네트워크 보안과 내부 자원 접근을 위한 핵심 기술이라는 걸 새삼 느꼈다.

 

간단한 기능을 구현할 때도 보안 담당자들이 왜 그렇게 세심하게 신경을 쓰는지 조금은 이해할 수 있었고, 앞으로는 나도 이런 부분들을 공부해서 보안 부담을 줄여줄 수 있는 개발자가 되어야겠다고 생각했다.

cojoop
@cojoop :: cojoop.dev

공감하셨다면 ❤️ 구독도 환영합니다! 🤗

목차