Open Ssh Tunneling
작성 : 김원일
1. 이 문서가 필요한 곳 ¶회사나 가정에서 작업하던 환경을 그대로 쓰고 싶지만 vpn 이나 firewall 등의 제한으로 외부에서 접근하기가 쉽지 않은 경우가 있다. proxy 가 있거나 vpn 이라면 별 다른 문제가 없을 수도 있겠으나 firewall 같은 경우 넷웍 관리자에게 요청하지 않는 이상, 또는 요청한다고 해도 그다지 쉽게 허가를 얻지 못할 것이다.
vpn 이라고 해도 외부의 누군가에게 잠깐 내부의 자원을 이용하게 하기위해 자신의 vpn 접속 방법을 가르쳐 주는 것도 양심상, 보안상 그다지 권장하고 싶은 일은 아니다. 이 문서는 그러한 경우 외부에서 접근 가능한 ssh계정을 이용해 터널을 만들어 vpn, firewall 외부에서 그 안쪽으로 접근을 가능하게 하는 방법이다.
2. 필요한 것 ¶
3.1. ssh -R 에 대해 ¶ssh -R 은 원격서버의 특정 포트를 자신이 접근 가능한 서버 및 포트 (이문서에서는 vpn 안쪽의 자신의 서버 또는 작업을 하려는 서버)로 포워딩 하는 것이다.
ssh -L 의 역이라고 봐도 무방하다 (ssh -L 에 대해서는 ssh mini proxy 문서를 참조하자)
vpn 또는 firewall 안쪽의 PC 에서
ssh -R port:host:hostport ssh_user@ssh_server 와 같은 명령을 사용한다.
ssh_server서버에 ssh_user라는 계정으로 접속하되 port로 지정한 포트로 들어오는 패킷을 host의 hostport로 포워딩한다는 것이다.
언뜻 알기 어렵지만 차근 차근 이해해 보자.
3.2. ssh -L 에 대해 ¶이제 우리가 원하는 우회로의 반은 열린 셈이다. 나머지 반을 열어보자.
ssh -L localport:localhost:port ssh_user@ssh_server 이 명령은 vpn 또는 firewall 바깥의 환경에서 쓰이게 된다. 즉 집이나 외부업체의 회의실 또는 외딴 섬마을 학교의 pc실에서 쓰인다는 것이다.
3.3. 접속 ¶우회로를 이용하는 건 다음과 같다.
4. 실제의 예 1 (ssh서비스 이용하기) ¶여기서는 실제로 명령어를 다루는 예를 들겠다.
다음과 같은 컴퓨터들이 등장한다.
4.1. my_office_pc 에서 ¶my_office_pc ~$ ssh -R 22:localhost:22 210.32.X.221 myaccout@210.32.X.221's password: _ <-- ssh_server 패스워드 입력 ssh_server ~$ _ 이제 짐을 싸고 정리한 후 퇴근한다!
4.2. my_home_adsl_pc 에서 ¶my_home_adsl_pc ~$ ssh -L 2222:localhost:22 210.32.X.221 myaccout@210.32.X.221's password: _ <-- ssh_server 패스워드 입력 ssh_server ~$ _ 다른 터미널을 열고
my_home_adsl_pc ~$ ssh -p 2222 localhost myaccout@localhost`s password: _ <-- my_office_pc 의 패스워드 입력 my_office_pc $ _ <--- 사무실에 ssh 로 연결 되었다!!! 마무리 작업을 하고 맥주 한잔!
5. 실제의 예 2 (터미널 서비스 이용하기) ¶여기서는 실제로 명령어를 다루는 예를 들겠다.
다음과 같은 컴퓨터들이 등장한다.
5.1. my_office_pc 에서 ¶지금의 사무실의 컴퓨터는 윈도우 환경이다. 윈도우에서는 별도의 ssh 프로그램이 필요하다.
> plink -R 3389:localhost:3389 210.32.X.221 myaccout@210.32.X.221's password: _ <-- ssh_server 패스워드 입력 ssh_server ~$ _ 이제 짐을 싸고 정리한 후 퇴근한다!
5.2. my_home_adsl_pc 에서 ¶집의 PC는 linux 또는 rdesktop 을 사용해야 한다. 이유는 MS에서 제공하는 windows용 terminal client는 별도로 IP를 확인하기 때문에 인증이 이루어지고도 사용은 불가능하다.
my_home_adsl_pc ~$ ssh -L 3389:localhost:3389 210.32.X.221 myaccout@210.32.X.221's password: _ <-- ssh_server 패스워드 입력 ssh_server ~$ _ 다른 터미널을 열고
my_home_adsl_pc ~$ rdesktop localhost:3389 (포트번호는 생략가능) //rdektop에서 my_office_pc의 윈도우 계정 패스워드 입력 //rdesktop이 시작된다. 마무리 작업을 하고 맥주 한잔!
6. 맺는 말 ¶원래는 친구 회사의 PC에서 작업을 하기 위해서 이런 방법을 생각해 보았다(어디까지나 친구 본인의 요청에 의해서). 꽤 귀찮아 보이지만 어쩔 수 없는 상황에서는 유용하리라고 생각한다. 외부에 ssh계정이 있어야 하는 단점이 있긴 하지만 그런 경우에는 각자의 집에 ssh 서비스를 이용하는 방법도 있으므로 큰 문제는 없으리라 생각한다.
|
You will overcome the attacks of jealous associates. |