SSH 란 ?

Southbig·2022년 8월 16일
0

SSH(Secure Shell)

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

기존 원격 접속은 ‘텔넷(Telnet)’이라는 방식을 사용했는데, 암호화를 제공하지 않기 때문에 보안상 취약하다는 단점이 있다

때문에 이를 암호화하는 SSH 기술이 등장했고,
현재 원격 접속 보안을 위한 필수적인 요소로 사용되고 있다

클라우드 서비스에서 제공하는 서버는 기본적으로 원격 접속을 해서 접근하고 사용한다
AWS와 같은 CSP(Cloud Service Provider, 클라우드 서비스를 제공하는 곳)에서 서버 생성시 필수적으로 SSH 보안 과정을 거친다

SSH 작동원리

사용자(클라이언트)와 서버(호스트)는 각각의 키를 보유하고 있으며, 이 키를 이용해 연결 상대를 인증하고 안전하게 데이터를 주고 받게 된다
여기서 키를 생성하는 방식이 두 가지가 있는데, 그것이 SSH를 검색했을 때 가장 쉽게 볼 수 있는 ‘대칭키’와 ‘비대칭키(또는 공개 키)’ 방식이다

비대칭키 방식

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

예를 들면,
사용자가 키 페어를 생성했을 경우, 공개 키를 서버에 전송한다
공개 키는 말 그대로 ‘공개’된 키이기 때문에 누구나 가질 수 있다
때문에 전송과정에서 유출되어도 크게 문제가 되지 않는다
서버는 공개 키를 받아서, 이 공개 키로 만들어진 랜덤한 값을 생성한다
이 값은 사용자가 올바른 키 페어를 가지고 있는지 시험하는 일종의 시험지와 같다

시험지를 받은 사용자는 가지고 있는 개인 키를 이용해 이 시험지를 푼다
앞서 말씀드린 것처럼 공개 키와 개인 키는 하나의 커플 관계와도 같기 때문에, 다른 공개 키나 개인 키를 이용해서 풀어낼 수 없다
오직 키 페어 생성 시 함께 생성된 개인 키와 공개 키만 서로 해석이 가능하다
다시 말해 개인 키를 제외한 그 어떤 방법으로도 이 시험지를 풀어낼 수 없다

또한 개인 키는 공개 키와 달리 다른 어디에도 보여주지 않는 소중한 파일이다 그래서 결과적으로 개인 키가 서버와 사용자 간의 사이를 증명하는 수단이 되는 것이다
공개 키에서 나온 문제는 개인 키로만 풀 수 있고, 개인 키(.pem)는 사용자만 가지고 있다
시험지를 풀어서 나온 값을 사용자는 다시 서버에 전송한다

서버는 사용자로부터 전송받은 값을 자신이 처음에 낸 값과 비교한다
두 값이 같게 되면 서버는 “이 사용자는 내 공개 키에 대응하는 올바른 개인 키를 보유하고 있으니, 내가 아는 사용자가 맞구나” 라고 판단하고 접속을 허용해준다
이렇게 최초 접속 시 사용자와 서버 간의 인증 절차가 비대칭키 방식을 통해 완료된다

비대칭키 방식

주고받는 과정에서 정보가 새어나가지 않기 위해 정보를 암호화해서 주고받는데, 여기서 사용되는 과정이 대칭키 방식이다
대칭키 방식에서는 비대칭키 방식과 달리 한 개의 키만을 사용하는데, 우리는 이것을 대칭 키라고 한다

예를 들면,
사용자 또는 서버는 하나의 대칭 키를 만들어 서로 공유한다
공유된 대칭 키를 이용해 정보를 암호화하면, 받은 쪽에서 동일한 대칭 키로 암호를 풀어 정보를 습득하게 된다
정보 교환이 완료되면 교환 당시 썼던 대칭 키는 폐기되고, 나중에 다시 접속할 때마다 새로운 대칭 키를 생성하여 사용하게 된다

profile
즐겁게 살자

0개의 댓글