Skip to content

7. SSH 포트 포워딩 (SSH 터널링)


1. SSH 포트 포워딩(SSH 터널링)이란

  • SSH 터널링은 프록시와 비슷한 역할을 하며, SSH의 특징 상 SSH 터널링을 통해 전달되는 데이터는 모두 암호화된다.


001


  • A 서버에서 80번 포트로 바인딩된 서비스에 접근할 필요가 있는 상황을 예로 들어보자.
  • 현재 보안 상의 이유로 A 서버의 방화벽에서 SSH(22번 포트) 외의 포트는 전부 차단된 상태이다.
  • 80번 포트로 접근해야 하지만 포트가 개방되지 않았기 때문에 불가능하다.


  • 이런 상황에서 SSH 터널링을 사용하면 웹 서버(80번 포트)에 접근할 수 있다.
  • 80번 포트를 사용하는 서비스와 SSH 서버를 엮은 뒤 SSH 터널링을 생성하고, 사용자가 서비스를 요청하면 해당 요청은 SSH 서버로 전송된 뒤 A 서버 내부에서 다시 포워딩된다.


002


  • 일단 사용자와 서버 간의 SSH 터널링이 수립되고 나면, 데이터의 요청 및 반환은 모두 SSH 서버를 통해 일어나므로 서버의 80번 포트로 직접 접근할 필요가 없다.
  • 따라서 SSH 서버는 터널링을 통해 데이터를 주고 받을 수 있게 해주는 일종의 프록시의 역할을 수행하게 된다.
  • SSH 연결 수립 뒤 외부로부터 데이터를 보호할 수 있는 일종의 연결 통로를 터널이라고 부른다.


  • SSH 클라이언트와 SSH 서버의 관계는 다음과 같이 다양하다.


003

004


2. SSH 포트포워딩(SSH 터널링) 사용하기

  • 현재 주어진 서버 상황은 위의 그림 중 두 번째에 해당한다.
  • 먼저 터미널을 열고 터널을 생성한다.


ssh -L localhost_port:farawayhost:farawayhost_port remotehost_name@remotehost


  • 연결이 되면 또 다른 터미널을 켜서 원하는 작업을 하면 된다.

References