DNS-323 원격지에서 공유 폴더 접근 (ssh tunneling)
최광용 Lv. 15 llllllllll 
11054 hit since 2008/03/25 16:19

ssh 터널링을 이용하기 위해서 ssh 클라이언트가 필요하다. *nix 시스템에는 기본적으로 들어있지만 윈도에는 없으므로 윈도에선 putty를 다운로드하여 이용한다.

  1. $ sudo ssh -L 139:localhost:139 cky@dns-323-ip-address

터미널에서 위와 같이 입력하여 ssh에 접속을 하면 터널이 만들어진다. localhost의 139번 포트로 들어오는 패킷을 ssh로 연결된 22번 포트를 통해 ssh 서버까지 보낸 다음, 서버단에서 localhost:139로 패킷을 포워딩한다. 즉, ssh client로 사용하는 PC의 139번 포트로 보내는 패킷은 DNS-323 장비의 139번 포트로 보내지게 되는 것이다. 참고로 139번 포트는 파일 공유를 위해 사용하는 포트이다.

ssh 로 연결된 터미널은 그대로 둔 채로, 다른 터미널을 열어서 다음과 같이 마운트를 한다. localhost에 공유된 폴더를 마운트 하듯이 하면 된다.

  1. $ mount_smbfs //cky:password@localhost/Volume_1 /Volume/Volume_1

바로 마운트 된다. 이제 로컬에서 사용하듯이 파일에 엑세스 할 수 있게 된다. ssh를 이용한 보안 기능은 덤이다.

윈도에서는 putty를 이용한다. putty를 통해 ssh로 연결을 한 뒤 타이틀바 오른쪽 클릭 -> Change Settings...를 클릭한다. 왼쪽 트리의 제일 밑에 있는 SSH를 확장한 뒤 Tunnels를 클릭한다. 오른쪽에 Source port에 139 입력, Destination에 localhost:139를 입력한뒤 Add 버튼을 눌러 추가해준다. 그 다음 Apply.

한가지 미리 해 둬야 할 것이 있는데 로컬 컴퓨터에서의 파일및 프린터 공유 기능은 꺼야 한다. 네트워크 환경의 속성에서 로컬 영역 연결 속성에 들어가면 (TCP/IP 프로토콜 등 정보 보이는 곳) Microsoft 네트워크용 파일 및 프린터 공유가 있을 것이다. 이를 제거한 뒤에 사용 가능하다.

putty를 통해 tunnel을 만들었다면 이제 연결을 해본다. 바로 연결이 될 것이다.

  1. \\localhost\Volume_1

ssh tunneling을 이용하는 다른 예를 들자면, 공유기의 설정을 바꾸는 것이다. 공유기의 내부 IP 주소가 192.168.0.1이라면 다음과 같이 터널을 만들어서 공유기의 설정 페이지에 접근할 수 있게 된다.

  1. $ ssh -L 8888:192.168.0.1:80 cky@dns-323-ip-address

브라우저를 열어서 접속을 해 본다. 공유기 설정 페이지에 연결이 될 것이다.

  1. http://localhost:8888

마찬가지로 DNS-323의 설정 페이지에 접속하고 싶다면 다음과 같이 터널을 만들어 접속하면 된다.

  1. $ ssh -L 9999:localhost:80 cky@dns-323-ip-address
  2. http://localhost:9999

학교나 회사에서 보안 정책 때문에 막혀있는 사이트들이 있다면 이제 무용지물이 되는 순간이다. ssh -L 의 반대인 -R 옵션도 있으니, 궁금한 사람은 한번 찾아봐도 좋을 것 같다.

(*) 이렇게 사용할 경우 CPU를 많이 사용하게 되어 throughput은 1MB/s 정도 나온다.