SSH 터널링 간단하게 알아보기
SSH란?
-
Secure Shell의 약자
-
손쉽게 PC에 접근하는 방식을 제공하기 위해 만들어진 프로토콜
SSH의 역할
-
인증 (Authentication)
-
사용자와 서버를 이증하는 역할을 한다.
- public key와 private key를 사용하는 비대칭 암호방식을 사용한다. private key는 외부 유출없이 가지고 있고 public key만 네트워크를 통해 전달해놓고 인증하는 방식이다.
-
클라이언트에서 서버에 접속할때 사용자를 인증해야 하는데 이때 전통적인 패스워드 인증방식과 더불어서 사용된다.
-
-
암호화 (Encryption)
-
SSH는 네트워크를 통해 전달되는 데이터를 암호화한다.
-
그래서 누군가 중간에 데이터를 가로채더라도 내용을 알 수 없다.
-
-
무결성 (Integrity)
-
네트워크를 통해 전달받은 데이터가 변경되지 않았음을 보장한다.
-
-
압축 (Compression)
-
SSH 연결을 통해 보낸 데이터를 압축할 수 있다.
-
SSH 클라이언트/서버 사이에서 데이터를 전송하기 전에 압축하고 이를 암호화해서 전송한다.
- 데이터를 받는 쪽에서는 복호화 작업을 거친 후 압축을 해제하고 사용한다.
-
SSH Tunneling
-
ssh 클라이언트와 서버 사이에 연결이 이루어지면 이를 터널링이라고 한다.
-
여기에 포트 포워딩(Port Forwarding)이란 기술을 더해서 다른 어플리케이션에 접근을 할 수 있다.
-
터널링을 통해서 방화벽을 우회할 수 있다. (ssh 서비스가 방화벽에 의해 차단되지만 않는다면…)
터널링의 종류
-
Local port forwarding
-
$ ssh -L 포트번호1:호스트명:포트번호2 서버명
-
포트번호1은 클라이언트가 검사(listen)하고 있을 포트번호를 지정하는 것이다.
-
이 포트번호1로 데이터가 왔을때 SSH 클라이언트가 SSH 서버로 데이터를 전송하고
-
SSH 서버는 이 데이터를 다시 호스트명의 포트번호2로 데이터를 보내준다.
-
예를들면, 사용자 A의 컴퓨터에서 B 서버에 있는 www.test.com 사이트에 접속하고자 하는데
-
A 컴퓨터에서 웹서핑을 못하도록 80포트를 막아 놓았을 경우, SSH 포트인 22번 포트가 열려있고, B 서버에 ssh 서버가 동작하고 있다면 ssh 터널링을 통해 80포트가 아닌 다른 포트로 포워딩하여 우회하여 접속이 가능하다.
-
-
-
Remote port forwarding
-
$ ssh -R 포트번호1:호스트명:포트번호2 서버명
-
이때 포트번호1은 SSH서버가 검사(listen)하고 있게 되고
-
여기로 데이터가 왔을때 SSH 클라이언트에게 데이터를 전송하고
-
클라이언트는 호스트명의 포트번호 2로 데이터를 전송한다.
-