DevOps

SSH 터널링(포트 포워딩)

r잡초처럼 2023. 2. 4. 00:35

1. 포트 포워딩이란

1.1 Port란?

위키 백과에서 포트는 인터넷 프로토콜 스위트에서 운영 체제 통신의 종단점이라고 한다. 네트워크 서비스나 특정 프로세스를 식별하는 논리 단리라고 한다. 여기서 식별이라 함은 port를 통해 서비스를 찾아갈 수 있다.

예를 들어보자 Django로 로컬에 웹 서버를 띄울 떄 console에는 다음과 같은 창이 뜬다.

Starting development server at http://127.0.0.1:8000/

IP:Port 번호인데 8000번이 아닌 8001을 입력하면 해당 서버에 접속할 수 없다. 이렇듯 Port를 통해 식별을 할 수 있다. 

1.2 포트포워딩?

포트 포워딩은 특정 포트로 들어오는 것을 다른 포트로 바꿔서 다시 전송하는 것이다. 만약 외부에서 210.XXX.XXX.X:8001 이란 IP와 Port로 요청이 들어왔을 때 포트포워딩을 통해 내부 IP 192.XXX.XXX.X:8000번으로 포워딩을 시킬 수 있다.

2. SSH 포트 포워딩을 사용하는 이유

(SSH 포트포워딩은 다른 말로 SSH 터널링이라고도 불린다. )

그렇다면 왜 SSH 터널링을 사용하는 걸까? 간단하다 편해서! 우리는 원격 서버로 접속할 때 보안상의 이유로 방화벽이 허용하지 않은 포트로는 접속할 수 없다. 하지만 SSH 터널링을 사용하면 방화벽을 우회하여 내부의 서비스로 접속할 수 있다. 일례로 Python의 라이브러리 중 하나인 sshtunnel 패키지는 remote_bind_address 인자를 제공하는데 여기에 DB 접속 정보를 입력하면 방화벽 설정을 하지 않아도 내부의 DB에 접속할 수 있다.


참고

https://www.cbtnuggets.com/blog/technology/networking/what-is-ssh-port-forwarding

 

What is SSH Port Forwarding?

If you’re a network admin, understanding SSH port forwarding is a must. It can help you secure network traffic, which is crucial to keeping data safe. Continue Reading

www.cbtnuggets.com