Fall in IT.

SSH 터널링 간단하게 알아보기 본문

기타

SSH 터널링 간단하게 알아보기

D.Y 2020. 7. 31. 13:51

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로 데이터를 전송한다.

참조

Comments