2009. 6. 5. 19:43

SSH 터널링

기본 환경
work_linux
방화벽내에 있는 linux PC
최종적으로 외부에서 접속하기를 원하는 PC

ssh_server
중간에 거쳐갈 SSH 중계 서버

my_win
집에서 작업할 윈도우 PC

작업 순서
1. work_linux PC에서 외부의 ssh_server로 SSH 터널을 만든다.
1. my_win PC에서 ssh_server로 SSH 터널을 만든다.
1. 이제 my_win PC에서 localhost로 접속하면 work_linux에 접속하게 된다.

work_linux PC에서 할 일
* xxx.xxx.xxx.xxx : 외부에 있는 ssh_server
ssh -R 2222:localhost:22 -R 8080:localhost:80 -R 2121:localhost:21 -R 5001:localhost:5001 myid@xxx.xxx.xxx.xxx


* -R 2222:localhost:22 : SSH 서버
* ssh_server의 2222번 포트로 들어오는 데이타를 localhost의 22번 포트로 전달한다.

* -R 8080:localhost:80 : HTTP 서버
* ssh_server의 8080번 포트로 들어오는 데이타를 localhost의 80번 포트로 전달한다.

* -R 2121:localhost:21 : FTP 서버
* ssh_server의 2121번 포트로 들어오는 데이타를 localhost의 21번 포트로 전달한다.

* -R 5001:localhost:5001 : FTP 데이타
* ssh_server의 5001번 포트로 들어오는 데이타를 localhost의 5001번 포트로 전달한다.
* vsftpd 서버를 active 모드가 아닌 passive 모드로 설정해야 한다.
* [[vsftpd passive 모드 설정하기]]

my_win PC에서 할 일
* 도스창을 열고 다음 명령을 수행한다.
plink.exe -L 22:localhost:2222 -L 80:localhost:8080 -L 21:localhost:2121 -L 5001:localhost:5001 myid@xxx.xxx.xxx.xxx

* -L 22:localhost:2222 : SSH 서버
* localhost의 22번 포트로 들어오는 데이타를 ssh_server의 2222번 포트로 전달한다.

* -L 80:localhost:8080 : HTTP 서버
* localhost의 80번 포트로 들어오는 데이타를 ssh_server의 8080번 포트로 전달한다.

* -L 21:localhost:2121 : FTP 서버
* localhost의 21번 포트로 들어오는 데이타를 ssh_server의 2121번 포트로 전달한다.

* -L 5001:localhost:5001 : FTP 데이타
* localhost의 5001번 포트로 들어오는 데이타를 ssh_server의 5001번 포트로 전달한다.

이제 연결하기
* work_linux로 SSH 연결하기
* putty에서 localhost:22로 접속하면 work_linux의 SSH로 접속하게 된다.

* work_linux로 HTTP 연결하기
* 웹브라우저에서 localhost:80으로 접속하면 work_linux의 HTTP로 접속하게 된다.

* work_linux로 FTP 연결하기
* FTP 클라이언트에서 localhost:21으로 접속하면 work_linux의 FTP로 접속하게 된다.