ssh 로 포트 포워딩(port forwarding)해서 Proxy 서버로 사용하기


개요

SSH Client 는 SSH Server 에 연결하는 용도외에 Port Forwarding 기능을 사용해서 Protocol tunneling 용도로도 사용할 수 있습니다.


예로 A(PC) <---------> B(SSH Server) <------------------------> C(Server) 구조의 네트워크가 있을때 A 에서 B 로는 들어가지만 C 로는 못 들어갈 경우가 있습니다.

B 에서 C 로 연결이 가능하고 B 에 SSH 서버가 설치되어 있다면 SSH 의 port forwarding 기능을 사용하여 A 에서 B를 통해 C 로 우회 연결이 가능합니다.


SSH port forwarding 기능을 사용하려면 먼저 SSH client 를 설치해야 하며 OS X 나 Linux 는 보통 기본적으로 설치되어 있습니다.

Windows 사용자는 Windows 에 OpenSSH 설치 를 참고해서 설치하면 됩니다.

SSH tunneling

PC 가 있고 ssh-server(예: 192.168.10.20) 라는 서버가 있을 경우 다음 명령어로 모든 연결 요청을 ssh-server 로 포워딩할 수 있습니다.

SSH Client 설정

 ssh -D 8123 -f -C -q -N ssh-server

PowerShell 로 구동

  • -D : dynamic port forwarding 용도로 binding할 포트를 지정하며 SOCK4와 SOCK5 를 지원합니다. 뒤에 지정한 포트 번호는 브라우저 설정에서 꼭 필요합니다.
  • -f:   SSH 연결이 수립되면 ssh 프로그램을 백그라운드로 전환합닌다. port forwarding 용도로 사용할 때 유용한 옵션입니다.
  • -C:  모든 데이타를 압축해서 송수신합니다. 많은 데이타가 오가는 X11 forwarding 등의 경우에 유용합닌다.
  • -N:  Remote command 를 실행하지 않습니다. port forwarding 용도로 사용할 때 유용한 옵션입니다.


만약 SSH 포트가 22번이 아니라면 다음과 같이 -p 옵션뒤에 포트 번호(예: 19022) 를 지정해 줍니다.

ssh -D 8123 -f -C -N -p 19022 ssh-server


정상 동작 여부를 확인했다면 정숙 모드로 실행하는 -q 옵션을 주고 실행하면 됩니다.

ssh -D 8123 -f -C -N -p 19022 ssh-server
  • -q:  워닝이나 진단 메시지등을 출력하지 않는 정숙 모드로 동작합니다.

Browser 설정

웹 브라우저를 다음과 같이 설정하면 port forwarding 한 SSH 서버를 통해 연결할 수 있습니다.

파이어폭스 설정


Chrome

설정 에서 proxy 를 입력하고 프록시 설정 화면에 들어갑니다.


수동 프록시 설정에서 주소에 127.0.01 을 입력하고 포트에 SSH 를 실행할때 지정한 포트(예: 812) 을 입력합니다.


저장을 누른후에 브라우저가 정상 작동하는지 확인합니다.


같이 보기

Ref