SSH (Secure SHell) 란? 쉽게 이해해보자.

출처 : 하나몬

"Secure Shell Protocol" 

즉 네트워크 프로토콜 중 하나로 컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해 서로 통신을 할 때 보안적으로 안전하게 통신을 하기 위해 사용하는 프로토콜입니다.

 

SSH는 개발을 하다보면 한번씩은 꼭 접해봤을 겁니다.

대표적인 예로는 Github을 사용할 때로, Github에 코드를 푸쉬하거나 Github 레포지토리를 clone할 때 사용하기도 합니다.

 

SSH를 사용하면 네트워크 상의 다른 컴퓨터에 원격 로그인하여 ( 예를 들어, AWS EC2 원격접속 ), 원격 시스템에서 명령을 실행하고, 다른 시스템으로 파일을 복사 ( SCP 명령어 ) 할 수 있습니다.

  • 데이터 전송
  • 원격 접속
  • 원격 제어

 

SSH를 사용하는 이유는, 

FTP나 Telnet과 같은 다른 컴퓨터와 통신을 위해 사용되는 프로토콜을 사용한다면,  

민감한 정보(예를 들어 로그인 정보)를 주고받는다면 정보를 직접 네트워크를 통해 넘기기 때문에 누구나 해당 정보를 열어볼 수 있어 보안에 상당히 취약합니다.

 

하지만 SSH를 사용하면 보안적으로 훨씬 안전한 채널을 구성한 뒤 정보를 교환하기 때문에 보다 보안적인 면에서 뛰어나기 때문에 "보안"의 목적을 위해 사용합니다.

 


SSH는 어떤식으로 동작하는가 ?

SSH 키는 공개키(public key)비밀키(private key)로 이루어지는데 이 두개의 키를 이해하는 것이 SSH Key를 이해하는데 핵심입니다.

모른다면 아래 포스팅을 통해 알아봅시다.

 

[암호화] 대칭키(비공개키)와 비대칭키(공개키) 란 ?

저번 포스팅에서 "암호화"에 대해 알아보았습니다. 암호화에는 단방향 암호화, 양방향 암호화 두 종류가 있었는데요. 이번 포스팅에선  양방향 암호화인 대칭키(비공개키)와 비대칭키(공개키)

hstory0208.tistory.com

 

 

키를 생성하면 공개키와 비공개키가 만들어지는데,

비밀키(private key)로컬(클라이언트)에 위치해야 하고, 공개키(public key)리모트(원격)에 위치해야 합니다.

(이 그림에서 로컬은 SSH Client, 원격은 SSH Server가 설치된 컴퓨터를 의미)

 

  1.  SSH Client가 SSH 접속을 시도하면 SSH Server는 서로의 키가 일치하는지 확인하기 위해 서버의 공개키로 암호화된 메시지를 보냅니다.
  2. SSH Client는 가지고 있는 비밀키를 이용해, 공개키로 암호화된 메시지를 복호화하여 SSH Server에 보냅니다.
  3. SSH Server는 SSH Client가 가지고 있는 비밀키가 자신의 공개키와 한 쌍인 것을 확인합니다.
     ( 비밀키와 공개키는 한 쌍이므로 한 쌍이 아닌 다른 키일 경우 복호화할 수 없습니다. )
  4. 이제 서로 한쌍의 키라는 것이 인증되어 클라이언트와 서버는 서로 통신을 할  수있게 됩니다.

이번 포스팅은 SSH에 대해 간단하게 알아보았습니다.

SSH 키를 생성하는 방법에 대해서는 인터넷 검색으로 명령어만 따라 치면 되기에 따로 포스팅은 하지 않았습니다.

이 글을 통해 SSH에 대해 쉽게 이해할 수 있길 바라며 궁금한 점이 있다면 댓글 남겨주시면 감사하겠습니다.