SSH 터널링(포트 포워딩)
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