7. SSH 포트 포워딩 (SSH 터널링)
1. SSH 포트 포워딩(SSH 터널링)이란
- SSH 터널링은 프록시와 비슷한 역할을 하며, SSH의 특징 상 SSH 터널링을 통해 전달되는 데이터는 모두 암호화된다.
A
서버에서 80
번 포트로 바인딩된 서비스에 접근할 필요가 있는 상황을 예로 들어보자.
- 현재 보안 상의 이유로
A
서버의 방화벽에서 SSH(22
번 포트) 외의 포트는 전부 차단된 상태이다.
80
번 포트로 접근해야 하지만 포트가 개방되지 않았기 때문에 불가능하다.
- 이런 상황에서 SSH 터널링을 사용하면 웹 서버(
80
번 포트)에 접근할 수 있다.
80
번 포트를 사용하는 서비스와 SSH 서버를 엮은 뒤 SSH 터널링을 생성하고, 사용자가 서비스를 요청하면 해당 요청은 SSH 서버로 전송된 뒤 A
서버 내부에서 다시 포워딩된다.
- 일단 사용자와 서버 간의 SSH 터널링이 수립되고 나면, 데이터의 요청 및 반환은 모두 SSH 서버를 통해 일어나므로 서버의
80
번 포트로 직접 접근할 필요가 없다.
- 따라서 SSH 서버는 터널링을 통해 데이터를 주고 받을 수 있게 해주는 일종의 프록시의 역할을 수행하게 된다.
- SSH 연결 수립 뒤 외부로부터 데이터를 보호할 수 있는 일종의 연결 통로를 터널이라고 부른다.
- SSH 클라이언트와 SSH 서버의 관계는 다음과 같이 다양하다.
2. SSH 포트포워딩(SSH 터널링) 사용하기
- 현재 주어진 서버 상황은 위의 그림 중 두 번째에 해당한다.
- 먼저 터미널을 열고 터널을 생성한다.
ssh -L localhost_port:farawayhost:farawayhost_port remotehost_name@remotehost
- 연결이 되면 또 다른 터미널을 켜서 원하는 작업을 하면 된다.
References