SSH Tunnel 만들어서 외부에서 내부IP 서버 접근하기
때로는 IP공유를 사용하고 있는 PC를 외부에서 접근할 수 있도록 설정을 해야 할때가 있다. 가끔씩 해결방법을 찾고 싶었는데 이번에 확실히 알아보았다. 아래의 그림을 보면서 같이 이해하길 바란다.
PC는 총 3개가 있다고 가정한다.
PC1 : 내부 아이피를 사용하고 있는 PC(www서버 설치됨:Port80)
PC2 : 공인 아이피를 사용하고 있는 PC(ssh서버 설치됨)
PC3 : 내부 아이피 or 공인 아이피를 사용하고 있는 제3의 PC(ssh 클라이언트만 설치되어 있으면 됨)
PC1에서 PC2로 연결을 시도한다. $ ssh -R 20000:localhost:80 userid@domain.domain
-R 옵션은 Remote의 20000포트와 로컬의 80포트를 터널로 잇겠다는 이야기이다. 즉, 접속요청을 받는 PC는 20000포트로 localhost 자신의 포트에 연결을 하면 접속요청을 한 PC의 80포트로 연결되게 된다..
[PC1:80 —– PC2:20000] 로 연결되었다. 그러나 다른 제 3자의 PC의 요청으로 20000포트로 접근이 불가능하다. SSH 터널은 1:1 관계로서 연결이 없는 PC는 배제된다.
이후 PC3에서 PC2로 연결을 시도한다.
$ ssh -L 80:localhost:20000 userid@domain.domain
-L 옵션은 Local을 기준으로 Tunnel을 열겠다는 의미이다. 이제 알수 있을 것이다. 20000포트를 PC3의 기준으로 localhost의 80포트에 연결해 달라는 뜻이다.
-L A:ADDR:C –> A의 로컬 포트를 서버측 localhost:20000 포트에 연결해 달라는 것이다.
[PC3:80 —– PC2:20000] 로 연결되었다.
이후 PC3에서 브라우저를 띄우고 localhost:80, 또는 localhost를 치게 되면 PC1의 80포트로 연결되어 웹페이지가 뜨는 것을 확인할 수 있게 될 것이다.