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
- -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) 을 입력합니다.
저장을 누른후에 브라우저가 정상 작동하는지 확인합니다.
같이 보기
- Windows 에 OpenSSH 설치
- putty 로 ssh port forwarding 설정
- SecureCRT SSH Port forwarding 으로 원격 서버 연결하기
- putty 로 ssh port forwarding 하여 remote 에 있는 MySQL 연결
- ssh port forwarding 을 사용해서 github 빠르게 접속하기