posted by 귀염둥이채원 2019. 2. 8. 16:19

SSH는 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 

다른 시스템으로 파일을 복사할 수 있도록 해 주는 프로토콜입니다.


ssh 터널링이란 A와 B사이에 가상의 네트워크를 생성하고 A가 B의 내부망을 이용할 수 있게 하는 것이다.


SSH 터널링은 Local 과 Remote 형식이 존재한다.

Local은 클라이언트측에서 지정한 포트를 감시하다가 서버로 전달하고, 서버의 지정된 호스트에 데이터를 전달하는 것이고

Remote는 서버측에서 지정한 포트를 감시하다가 클라이언트로 전달하고, 클라이언트의 지정한 호스트로 데이터를 전달하는 것이다. 


# Local Tunneling: 윈도우 cmd 창에서 실행

접속은 SSH 포트인 22번만 열려있고 웹서버 관련 포트는 리눅스 서버의 로컬 방화벽으로 막혀 있는 상황이라고 가정하자.

ex1) ssh -N -L {Local Port}:{Remote IP}:{Remote Port} [SSH 서버]

ex2) ssh -N -L {Local Port}:{Remote IP}:{Remote Port} {ssh user}@{Remote IP} -p 22 


# Local Tunneling: 웹브라우져 실행해서 웹서버 접속

http://localhost:{Local Port}


# ssh 옵션 설명

-p [number]  : number 포트번호로 접속한다.

-N : 원격 쉘을 실행시키지 않고 접속만 유지한다.

-L [로컬포트번호:호스트:호스트포트번호] : 로컬 포트번호로 listen 소켓을 열고 들어오는 패킷을 원격지에서 호스트:호스트포트번호로 전송한다.


참고로 mobaxterm을 이용하면 Local, Remote 터널링을 그림으로 보여줘서 쉽게 이해할수 있다.


# 참고 사이트

https://blog.lael.be/post/845

http://linux.systemv.pe.kr/ssh-%ED%8F%AC%ED%8A%B8-%ED%8F%AC%EC%9B%8C%EB%94%A9/

https://mrrootable.tistory.com/31

https://itsaessak.tistory.com/171

https://dololak.tistory.com/29

https://umbum.tistory.com/18