나의 잡다한 노트 및 메모

SSH 터널링 본문

네트워크

SSH 터널링

peanutwalnut 2025. 2. 27. 23:48

왜 SSH 터널링을 하는가?

  1. 보안 강화
    • 네트워크 트래픽을 암호화하여, 중간에서 도청이나 변조가 일어나지 않도록 보호합니다.
  2. 방화벽 및 NAT 우회
    • 외부에서 접근할 수 없는 내부 서비스(예: 데이터베이스, 내부 웹 서버 등)에 안전하게 접속할 수 있습니다.
  3. 원격 포트 포워딩
    • 로컬 머신의 특정 포트를 원격 서버의 포트로 연결하여, 로컬에서 원격 서비스에 접속할 수 있습니다.
  4. 역방향 포트 포워딩
    • 원격 서버의 포트를 로컬 머신의 포트로 포워딩하여, 원격 서비스에 로컬 애플리케이션이 접근할 수 있도록 합니다.

 

SSH 터널링의 종류

  1. 로컬 포트 포워딩 (Local Port Forwarding)
    • 로컬 머신의 포트를 원격 서버의 특정 포트로 연결합니다.
  2. 원격 포트 포워딩 (Remote Port Forwarding)
    • 원격 서버의 포트를 로컬 머신의 특정 포트로 연결합니다.
  3. 동적 포트 포워딩 (Dynamic Port Forwarding)
    • SOCKS 프록시 서버 역할을 하여, 여러 목적지로의 트래픽을 터널링할 수 있습니다

 

로컬 포트 포워딩 예시

예를 들어, 원격 서버의 HiveServer2가 1.2.3.4의 10000번 포트에서 실행 중이고, 로컬에서 접속하고 싶을 때:

ssh -L 10000:localhost:10000 user@1.2.3.4
  • -L 10000:localhost:10000:
    로컬 머신의 10000번 포트를 원격 서버의 localhost(즉, 접속 후 원격 서버 내부에서의 localhost)의 10000번 포트에 연결합니다.
  • 터널이 설정되면, 로컬에서 localhost:10000으로 접속하면 자동으로 원격 서버의 10000번 포트로 트래픽이 전달됩니다.

 

원격 포트 포워딩 예시

예를 들어, 로컬 머신의 8080 포트를 원격 서버에서 접근할 수 있도록 하고 싶을 때:

 
ssh -R 8080:localhost:80 user@1.2.3.4
  • -R 8080:localhost:80:
    원격 서버의 8080번 포트를 로컬 머신의 80번 포트에 연결합니다.
  • 원격 서버에서 localhost:8080으로 접속하면, 로컬 머신의 80번 포트에 접근하게 됩니다.

 

궁금한게 있는데, 리눅스 서버가 50000~50999 포트를 포트포워딩으로 열어놧고 여길 통해서만 인터넷에 연결이 된다고 했을 때, SSH 터널링으로 해당 서버의 10000번 포트를 로컬의 10000번 포트로 연결했을 때, 포트포워딩의 영향을 안받고 연결이 되니?

 

만약 해당 서버가 외부와 통신할 때 오직 50000~50999 포트만 열려 있다면, SSH 서버도 그 중 하나의 포트(예: 50000번 포트 등)에서 접속을 받고 있을 것입니다.
이 경우, SSH 터널링은 이미 허용된 포트를 통해 SSH 연결을 설정한 후 내부적으로 포트 포워딩을 처리하므로,
서버의 10000번 포트가 외부에서 직접 접근 가능한 포트가 아니더라도 SSH 터널 내부에서는 문제없이 연결됩니다.

즉,

  • SSH 터널은 허용된 포트를 통해 설정되고, 그 안에서 내부적으로 로컬의 10000번과 서버의 10000번 포트를 매핑합니다.
  • 외부의 포트포워딩 제한(50000~50999)은 SSH 연결 설정 단계에서만 영향을 미치며, 터널이 설정된 후에는 내부 포트(예: 10000번) 사용에는 영향을 주지 않습니다.

따라서, SSH 터널링으로 서버의 10000번 포트를 로컬의 10000번 포트로 연결하면, 포트포워딩 규칙의 영향을 받지 않고 터널 내부에서 정상적으로 동작합니다.

 

말그대로 터널링. vpn을 생각하면 된다. 

 

'네트워크' 카테고리의 다른 글

rsync 란?  (0) 2025.02.27
--insecure-skip-tls-verify  (0) 2025.02.19
openssl.cnf 예시와 SAN과 CN 이란?  (0) 2025.02.19
Let's Encrypt란?  (0) 2025.02.19
TLS 관련 용어, 개념 정리  (0) 2025.02.19