본문 바로가기
OS & Network

SSH 란

by 새발개발JA 2021. 8. 23.
반응형

 

 

실무에서 개발환경을 세팅할 때마다 SSH 접속을 위한 세팅을 해주는 과정을 거친다. 그래서 튜토리얼을 따라 세팅하면서도 내가 하는 세팅이 뭔지를 잘 몰라 답답하기도 하고 궁금하기도 하였다. 항상 답답함의 연속이지만 한걸음 한걸음 걸음마하다보면 쌓이지 않을까 기대해본다. ㅠㅠ

자 그럼 SSH 가 무엇인지 자세히 살펴보자.

 


SSH(Secure Shell) 란

SSH는 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜이다.

 

원래는 쉘에 원격으로 접속 하려면 ‘텔넷(Telnet)' 을 사용했는데, 암호화를 되지않아 보안상 취약했다. 실제로 패킷 분석 프로그램으로 원격 접속 과정에서 옮겨지는 비밀번호나 파일 내용 등의 데이터를 쉽게 탈취할 수 있다.

그래서 여기에 암호화 기능을 추가하여 1995년에 나온 프로토콜이다. 현재에도 원격 접속 보안을 위한 필수 요소이다.

특히, 클라우드 서비스에서 제공하는 서버는 기본적으로 원격 접속을 해서 접근한다. 그래서 NBP나 AWS와 같은 CSP(Cloud Service Provider, 클라우드 서비스를 제공하는 곳)에서는 서버 생성시 필수적으로 SSH 보안 접속을 거쳐야 한다.

 

SSH KEY

SSH의 가장 핵심 키워드는 ‘KEY’ 다. 사용자(클라이언트)와 서버(호스트)는 각각의 키를 보유하고 있으며, 이 키를 이용해 서로가 맞는지 인증하고 안전하게 데이터를 주고 받게 된다. 키를 생성하는 방식은 두 가지가 있는데, ‘대칭키’와 ‘비대칭키(또는 공개 키)’ 방식이다.

 

비대칭키 방식

가장 먼저 사용자와 서버가 서로의 정체를 증명해야 한다. 이때 비대칭키 방식을 사용한다.

비대칭키 방식에서는 서버 또는 사용자가 Key Pair(키 페어)를 생성한다. Key Pair공개 키 + 개인 키 로 이루어진 한 쌍이며, 보통 공개 키의 경우 .pub, 개인 키의 경우 .pem의 파일 형식이다.

 

예를 들어,

사용자가 키 페어를 생성하고, 공개 키를 서버에 전송한다. 공개 키는 말 그대로 ‘공개’된 키이기 때문에 전송과정에서 유출되어도 크게 문제가 되지 않는다. 서버는 공개 키를 받아서, 이 공개 키로 만들어진 랜덤한 값을 생성한다.

 

사용자는 가지고 있는 개인 키로 랜덤한 값으로 시험지를 푼다. 키 페어에서 같이 만들어진 개인 키와 공개 키만 서로 해석이 가능하기 때문에 키페어의 개인 키를 제외한 그 어떤 방법으로도 이 시험지를 풀어낼 수 없다.

 

개인 키로 시험지를 풀어서 나온 값을 사용자는 다시 서버에 전송한다.  개인 키는 공개되지 않은 Private 파일이다. 그래서 개인 키가 서버와 사용자의 관계를 증명하는 수단이 된다. 공개 키에서 나온 문제는 개인 키로만 풀 수 있고, 개인 키는 사용자만 가지고 있기 때문이다. 우리가 그동안 CSP를 이용할 때, 서버 생성 시에 제공받은 pem 파일이 바로 이 파일(개인 키)이다. 

 

 서버는 사용자로부터 전송받은 값을 자신이 처음에 낸 값과 비교한다. 두 값이 같으면 서버는 “이 사용자는 내 공개 키에 대응하는 올바른 개인 키를 보유하고 있으니, 내가 아는 사용자가 맞다!” 라고 판단하고 접속을 허용한다.

 

이렇게 최초 접속 시 사용자와 서버 간의 인증 절차가 비대칭키 방식을 통해 완료된다.

 

ex) 발급시, id_rsa가 개인키 id_rsa.pub가 공개키이다. 

 

대칭키 방식

서로가 누군지를 알았으니 이제 정보를 주고받을 차례다. 주고받는 과정에서 정보를 암호화해서 주고받는데, 여기서 사용되는 과정이 대칭키 방식이다. 대칭키 방식에서는 비대칭키 방식과 달리 한 개의 키(대칭 키) 만을 사용한다.

 

아까와 같이 예를 들면,

사용자 또는 서버는 하나의 대칭 키를 서로 공유한다.

한쪽이 대칭 키로 정보를 암호화하면, 다른쪽은 동일한 대칭 키로 암호를 풀고 정보를 받는다.

정보 교환이 끝나면 사용된 대칭 키는 폐기되고 나중에 다시 접속할 때마다 새로운 대칭 키를 생성하여 사용한다.

 

 

 

 

ref: https://library.gabia.com/contents/infrahosting/9002/

 

 

 

 

반응형

댓글