우리는 리눅스 계열의 서버에 접속하려는 경우에 SSH 프로토콜을 사용합니다. SSH를 통해 까만 커맨드 창에 접속하는 입구는 일반적으로 22 포트를 사용하구요.
여기서 포트(Port)는 마치 아파트의 호수와 비슷하다고 이해하시면 좋을 것 같습니다. 아파트 입구까지만 왔더라도, 정확한 호수를 알아야 원하는 장소에 도착하듯이, 서버를 접속하는 경우에도 서버의 IP 주소 뿐만 아니라, Port라는 구체적인 동/호수를 알아야 접속할 수 있습니다.
SSH 터널링 개념
아래는 우리가 Server A, Server B 접속하려는 계획을 보여주고 있습니다. Server A는 SSH 프로토콜인 22 포트를 통해서 서버에 접속하려고 하고, Server B는 80 포트를 통해서 기동된 애플리케이션을 사용하려는 것입니다.
나의 PC -- 22 → Server A 접속
나의 PC -- 80 → Server B 접속
그러나 나의 PC가 있는 공간은 조금의 제약이 있을 수도 있습니다. 만약 회사 사무실에서 Server A,B를 접속한다고 가정합시다. 회사 안이거나 학교 안에서 설정한 방화벽으로 인하여 Server B에 접속할 수 없는 상황이 있을 수 있습니다. 이런 경우에 Server B에 어떻게 접속할 수 있을까? 고민스러울 것이다.
위와 같은 경우에 우리는 바로 터널링(Tunneling) 기술을 활용하여 Server B를 접속할 수 있습니다. 바로 Server A를 거쳐서 Server B에 도착하는 것입니다. Server A에 접속한 후, Server B로 향하는 터널을 만든다고 생각하면 됩니다. 만든 터널을 통해서 Server A → Server B로 향하는 것입니다.
터널링은 포트 포워딩(Port Forwarding)이라는 용어로도 불립니다. 터널링 = 포트 포워딩!
나의 PC -- 22 → Server A → Server B
그럼 Command 측면에서는 SSH 터널링을 어떻게 할 수 있는지 알아보도록 합니다. ssh 프로토콜을 조금 더 편하게 사용하기 위해서 도구를 활용하기도 하지만, 근본적인 터널링이 어떤 명령어 기반으로 수행되는지를 먼저 이해하도록 합니다.
그 전에 각 서버에 대한 IP와 Port를 가정하도록 합니다.
- Server A : IP 주소는 192.168.0.1, 포트는 22번으로 접속
- Server B : IP 주소는 192.168.0.2, 포트는 80번으로 접속
SSH 접속 명령어
단순하게 Server A에만 접속하는 ssh 명령어를 짚고 넘어갑니다.
SSH 접속 명령어 : ssh [서버A 계정]@[서버IP주소] -p [접속할 포트]
$ ssh jey@192.168.0.1
로 입력할 수 있습니다. -p 22 를 제외한 이유는 ssh 명령어의 디폴트 포트가 22번이므로 따로 작성하지 않았습니다. 만약 ssh 포트가 22가 아닌 다른 값으로 사용한다면, -p 접속할포트를 작성해주어야 합니다.
SSH 터널링 명령어
그럼 본격적으로 내 PC에서 Server A를 거쳐서 Server B에 접속하는 방법을 알아봅니다.
SSH 터널링 명령어 : ssh -L [접속에 사용할 원하는 포트]:[최종 접속할 서버 IP]:[최종 접속할 서버 포트] [거처갈 서버]
조금 쉽게 설명하면 최종 접속할 서버는 Server B이고 거쳐갈 서버는 Server A가 됩니다. 명령어도 문법과 유사하기 때문에, 해당되는 값으로 변경하면 됩니다. 즉, ssh -L [원하는포트]:[Server B IP]:[Server B Port] [Server A IP] 으로 이해하면 됩니다.
$ ssh -L 1234:192.68.0.2:80 192.168.0.1
위의 터널링을 내 PC에서 수행하는 동시에, 내 PC → Server A → Server B로 바로 접속할 수 있는 통로가 생긴 것입니다. 비록 눈에 보이진 않지만요. Server B는 80포트로 접속해야 하므로, 웹 브라우저에서 Server B에 접속해봅니다.
웹 브라우저의 URL 입력창 : localhost:[이전에 정한 원하는 포트]
그럼 Server B의 기동된 애플리케이션을 확인할 수 있습니다.
'잡학IT' 카테고리의 다른 글
Helm 자료 구조 및 함수 (1) | 2024.03.31 |
---|