SSH 로컬 포트 포워딩 (SSH 터널링)

2020. 8. 30. 14:32Computer Science/CS

SSH 로컬 포트 포워딩 (SSH 터널링)


포트 포워딩 방식에는 3가지가 있는데(Local, Remote, Dynamic), 이번 포스팅에서는 회사에서 주로 쓰고 있는 Local Port Forwarding만 다룰 것이다. 로컬 포트 포워딩을 이해하기 위해서는 3가지 주인공이 필요하다. 

  • SSH-Client : 웹 서버로의 접근을 원하는 서버 혹은 Local PC
  • SSH-Server : 접근할 웹 서버를 담고 있는 서버, 22번 포트가 열려 있다고 가정할 때 이것을 통해서 웹 서버에 접근한다
  • Web server : SSH-Client가 접근을 원하는 웹 서버, Nginx 서버고 80번 포트에 바인딩 돼 있다고 가정하자

 

좀 더 직관적인 이해를 위해 그림 추가

그림을 보면 클라이언트가 SSH-Server에 접근할 때, 22번 포트로는 접근이 가능하지만 Nginx 웹 서버는 방화벽(firewall)에 막혀 접근하지 못하는 상황이다. 이런 경우 22번 포트로 우선 Server에 우회해서 접근한 뒤, 80번 포트에 연결하는 방법을 활용하는데, 이게 바로 포트 포워딩, 터널링이다. 사용 방법은 아래와 같다.

 

우리 그림의 예시에 맞게 해보자면

ssh -L 8888:127.0.0.1:80 SSH-Server

이런 형태로 된다. 풀어서 설명해보자면,

 

우리는 '-L' 로컬 포트 포워딩을 시도할 거고, SSH-Client에서 8888번 포트로 웹 서비스를 열어 볼 거야. 즉, 크롬 주소 창에 localhost:8888이라고 써서 열어 볼 거란 말이지. 우리가 접근을 원하는 Nginx 웹 서버 주소는 127.0.0.1 이고, 80번 포트에 바인딩 돼 있어. 우리는 SSH-Server를 우회해서 해당 웹 서버에 연결 할 거야. SSH-Server대신 192.168.53.1을 입력 해도 상관 없지.

 

라는 의미다.

'Computer Science > CS' 카테고리의 다른 글

HTTP protocol 쿠키와 세션  (1) 2021.05.06
Connect MySQL with DBeaver  (0) 2020.10.31
Mac MySQL 설치와 DB, TABLE 생성  (0) 2020.10.28