The Pursuit of Happyness

반응형

아래 그림에서 처럼 Host A (클라이언트) 에서 Host B (서버) 로 SSH를 이용해서 서버에 접속을 하면 둘 사이에 연결이 이루어 지는데, 이 연결 통로를 터널이라고 한다. 이 연결은 암호화 등을 통해 보호되며, 포트 포워딩을 이용하여 다른 애플리케이션이 이 터널을 이용할 수 있다.

 


터널링은 크게 Local Port Forwarding 과 Remote Port Forwarding 으로 나눠진다.

- Local Port Forwarding은 로컬 서버에서 리모트 서버의 특정 포트에서 동작하고 있는 애플리케이션에 접속이 필요한 경우 사용한다.

예를 들어 방화벽이 설정되어 22번 (SSH) 포트는 열려 있으나, 3306번 (MySQL) 포트가 막혀 있는 리모트 서버에 대해, 터널링을 이용하면 외부에서 MySQL에 접속할 수 있는 터널을 생성해 준다.

Local Port Forwarding 은 다음과 같은 형식으로 사용할 수 있다.

 $ ssh -L[bind_address:]port:host:hostport user@hostname


SSH 터널링 (SSH연결을 통해 localhost의 3306번 포트로 들어오는 트래픽을 serverurl.com 서버의 3306번 포트로 포워딩한다.)

 $ ssh -L 3306:localhost:3306 test@serverurl.com

터널링이 연결된 상태에서 MySQL 접속 (MySQL 클라이언트를 로컬호스트 (3306번 포트) 로 접속을 하면 serverurl.com의 MySQL서버에 접속하게 된다.

 $ mysql -h localhost -u mysqluser


- Remote Port Forwarding은 리모트 서버의 애플리케이션이 클라이언트의 특정 포트에 접속이 필요한 경우 사용할 수 있다. 

Remote Port Forwarding 은 다음과 같은 형식으로 사용할 수 있다.

 $ ssh -R[bind_address:]port:host:hostport user@hostname




반응형