ssh Tunneling

By | 2021년 12월 24일

데스크탑 공유 프로그램을 사용하면 집에 있는 컴퓨터에서 회사에 있는 내 컴퓨터에 접속하여 집에서도 마치 회사에 있는 컴퓨터를 그 컴퓨터 모니터 앞에서 작업하는 것과 같이 사용할 수 있다.
그러나 대부분의 경우 사이버 보안을 위해 회사 intranet 주위에 방화벽이 설치되어 있으며 몇개의 포트외에는 대부분 막혀있어 리모트 데스크탑을 사용하기가 어려운 경우가 많다. 하지만 만약 ssh (secure shell) 포트(22)가 열려 있고, tcp port forwarding이 가능하도록 설정되어 있다면 방화벽을 가로질러 방화벽 내에 있는 컴퓨터의 원격데스크탑 포트인 5900 포트와 더불어 다른 용도로 사용되는 포트에도 접속할 수 있다.

이 방법을 사용하려면 방화벽내에 ssh 서버가 설치되어 있어야 하고 tunneling 또는 forwarding이 가능하도록 설정되어 있어야 한다. 그리고 내 컴퓨터에 ssh client가 설치되어 있어야 한다.

만약 회사내 (학교내) ssh 서버의 주소가 123.45.678.90 이고
회사내 전산망내 접속하고자 하는 캄퓨터의 주소가 192.168.0.10,
접속하고자 하는 포트가 81 이라고 하자.

내 컴퓨터의 OS가 linux 또는 bsd (freebsd, macOS, ..) 계열이라고 하면, 터미날 앱을 실행시킨 후 터미날에 다음과 같은 명령을 수행한다. 여기서 내 컴퓨터의 내컴퓨터포트 가 회사컴포트 에 대응하는 관계가 설정된다.

$ ssh -L 내컴퓨터포트:회사컴주소:회사컴포트 sshd-서버주소

형태로 명령을 실행하고 로그인한다.

예를 들어, 웨브라우져를 통해 회사내 컴퓨터(192.168.0.10)의 포트 81 에 접속하고자 한다면

$ ssh -L 81:192.168.0.10:81 123.45.678.90

로 로그인 한 후,

내 컴퓨터의 웹브라우져에서

http://localhost:81

을 실행하면 회사에 있는 컴퓨터에서 http://192.168.0.10:81 을 실행한 것과 같은 화면이 나타나게 된다.

ssh -L 외에 ssh -R 명령도 있는데 -L은 방화벽 너머의 컴퓨터:포트에 연결한다는 의미라면 -R 옵션은 방화벽 이전에 있는, 다시 말하자면 ssh 명령을 시행하는 컴퓨터가 속해 있는 intranet 상의 컴퓨터:포트와 연결짓는 명령을 수행한다.

답글 남기기