군옥수수수 2017. 12. 13. 01:21

SSH

안녕하세요. 오늘은 제가 평소에 많이 사용은 하지만 정확히 그것이 어떻게 동작하는지에 대해서 알고 싶어서 공부를 해보고 간단하게 정리를 해보는 시간을 가지려고 합니다.


동아리에서 한 친구가 "SSH가 뭐에요?" 라는 질문을 했었습니다. 많이 사용을 했고 언제 사용하는지도 대충은 알았지만 그것이 어떻게 동작하는지와 정확히 무엇인지는 잘 몰랐기에 저는 대충 "그냥 다른 컴퓨터에 접속할 때 쓰는거야" 라고 설명했습니다. 이렇게 저도 대충 알려주었기 때문에 계속 신경이 쓰였고 이렇게 알아보고 기록을 하는데 오랜 시간이 걸렸습니다.


그럼 이제 제가 알아본 SSH에 대한 것을 간략하게 정리해보도록 하겠습니다.


SSH란?

SSH란 Secure Shell Protocol, 즉 네트워크 프로토콜 중 하나로 컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해 서로 통신을 할 때 보안적으로 안전하게 통신을 하기 위해 사용하는 프로토콜입니다. 대표적인 사용의 예는 다음과 같습니다.


  1. 데이터 전송
  2. 원격 제어

이 둘은 개발 공부를 하시는 분이라면 한 번쯤은 사용해보셨을 것이라고 생각합니다. 먼저 데이터 전송의 예로는 원격 저장소인 깃헙이 있을 수 있습니다. 소스 코드를 원격 저장소인 깃헙에 푸쉬할 때 여러분은 SSH를 활용해 파일을 전송하게 됩니다.


다음으로는 원격 제어입니다. 웹 개발 공부를 하시는 분이시라면 AWS와 같은 클라우드 서비스를 이용해보셨을 것입니다. 우리는 AWS의 인스턴스 서버에 접속하여 해당 머신에 명령을 내리기 위해서도 SSH를 통한 접속을 해야 합니다.


그렇다면 FTP나 Telnet과 같은 다른 컴퓨터와 통신을 위해 사용되는 프로토콜도 있는데 SSH를 사용하는가를 생각해볼 수 있습니다. 그 이유는 물론 "보안"입니다. 만일 예로 언급한 두 프로토콜을 통해 민감한 정보(예를 들어 로그인 정보)를 주고받는다면 정보를 직접 네트워크를 통해 넘기기 때문에 누구나 해당 정보를 열어볼 수 있어 보안에 상당히 취약합니다.


반면 SSH는 먼저 보안적으로 훨씬 안전한 채널을 구성한 뒤 정보를 교환하기 때문에 보다 보안적인 면에서 훨씬 뛰어납니다.

그렇다면 SSH는 어떤 방식으로 서로 다른 컴퓨터가 안전하게 통신하게끔 할까요?


Private Key and Public Key

SSH는 다른 컴퓨터와 통신을 하기 위해 접속을 할 때 우리가 일반적으로 사용하는 비밀번호의 입력을 통한 접속을 하지 않습니다.

기본적으로 SSH는 한 쌍의 Key를 통해 접속하려는 컴퓨터와 인증 과정을 거치게 됩니다. 이 한 쌍의 Key는 다음과 같습니다.


  • Private Key
  • Public Key

먼저 Public Key는 단어 뜻 그대로 공개되어도 비교적 안전한 Key입니다. 이 Public Key를 통해 메시지를 전송하기 전 암호화를 하게 됩니다. Public Key로는 암호화는 가능하지만 복호화는 불가능합니다. 


그리고 이와 쌍을 이루는 Private Key는 절대로 외부에 노출이 되어서는 안되는 Key로 본인의 컴퓨터 내부에 저장하게 되어있습니다. 이 Private Key를 통해 암호화된 메시지를 복호화 할 수 있습니다.


이렇게 한 쌍의 Public Key와 Private Key는 서로 매우 복잡한 수학적인 관계를 맺고 있습니다.


이러한 Private Key와 Public Key를 통해 다른 컴퓨터와 통신을 하기 위해서는 먼저 Public Key를 통신하고하는 컴퓨터에 복사하여 저장합니다. 그리고 요청을 보내는 클라이언트 사이드 컴퓨터에서 접속 요청을 할 때 응답을 하는 서버 사이드 컴퓨터에 복사되어 저장된 Public Key와 클라이언트 사이드에 해당 Public Key와 쌍을 이루는 Private Key와 비교를 하여 서로 한 쌍의 Key인지 아닌지를 검사합니다.


이렇게 서로 관계를 맺고 있는 Key라는 것이 증명이 되면 비로소 두 컴퓨터 사이에 암호화된 채널이 형성이 되어 Key를 활용해 메시지를 암호화하고 복호화하며 데이터를 주고 받을 수 있게 됩니다.


마무리

오늘은 이렇게 간단하게 SSH가 무엇인지 그리고 그 원리를 간단하게 살펴보고 SSH가 어디에 사용되는지도 알아보았습니다. Key를 생성하고 두 Key간의 수학적인 관계에 대해서는 저도 알아보지 않았고 매우 복잡한 과정이기 때문에 이 포스팅에서는 다루지 않았습니다. 감사합니다.


참고 자료에 있는 영상들은 매우 쉽게 그림을 통해 설명되어 있으니 꼭 한번 시청해보시기 바랍니다.


참고자료


  1. SSH란 무엇인가
  2. SSH Key
  3. How Secure Shell Works
  4. What is SSH?