IT지식/Computer Science

SSH(Secure Shell)이란?

맨땅에헤딩개발자 2025. 1. 7. 20:40

SSH(Secure Shell)

 

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

 

* Shell : 명령어와 프로그램을 사용할 때 쓰는 인터페이스를 말합니다. 좀 더 자세히 표현하자면 커널과 사용자간의

              다리 역할을 하는 것으로 사용자로부터 명령을 받아 그것을 해석하고 실행하는 역할을 합니다.

 

기존에는 텔넷(Telnet)이라는 방식을 사용했는데, 암호화를 제공하지 않기 때문에 보안상의 이슈로 암호화가 가능한

SSH가 등장하였고 원격 보안 접속을 위한 필수로 자리잡고 있습니다.

 

 

 

SSH의 작동원리

 

SSH를 구성하는 가장 핵심적인 키워드는 'KEY(키, 열쇠)'입니다. 사용자(클라이언트)와 서버(호스트)는 각각의 키를

보유하고 있으며, 이 키를 이용해 연결 상대를 인증하고 안전하게 데이터를 주고 받게 됩니다.

여기서 키 생성에는 두 가지 방식이 있는데 '대칭키'와 '비대칭키(또는 공개 키)' 방식입니다.

 

- 비대칭키

 

작동하는 순서를 하나하나 짚어보자면 가장 먼저 사용자와 서버가 서로의 정체를 증명해야 합니다.

이 시점에서 사용되는 것이 바로 비대칭키 입니다.

비대칭키 방식에서는 서버 또는 사용자가 Key Pair(키 페어, 키 쌍)를 생성합니다.

키 페어는 공개 키와 개인 키 두 가지로 이루어진 한 쌍을 뜻하며,

보통 공개 키의 경우 .pub, 개인 키의 경우 .pem의 파일 형식을 띄고 있습니다.

 

예를 들어, 사용자가 키 페어를 생성했을 경우 공개 키를 서버에 전송합니다.

공개 키는 전송 과정에서 유출되어도 크게 문제가 발생하지 않습니다.

서버는 공개 키를 받아 랜덤 값을 생성합니다. 이 값은 사용자가 올바른 키 페어를 가지고 있는지 시험하는 

일종의 시험지와 같습니다.

시험지를 받은 사용자는 가지고 있는 개인 키를 이용해 이 시험지를 풉니다.

앞서 말씀드린 것처럼 공개 키와 개인 키는 한 셋트이기 때문에 다른 공개 키나 개인 키로는 풀 수 없습니다.

다시 과정으로 돌아와서 시험지를 풀어 나온 값을 다시 서버에 전송하고

서버는 이 값을 보고 올바른 개인 키 인지 판단하고 접속을 허용해줍니다.

결과적으로 개인 키가 서버와 사용자 간 사이를 증명하는 수단이 되는 것 입니다.

 

 

- 대칭키

 

위의 과정에서 서로가 누군지 증명했고 접속을 허용했다면 이제 데이터를 주고받을 차례입니다.

주고받는 과정에서 정보가 새어나가지 않기 위해 정보를 암호화해서 주고받는데

이 때 사용되는 방식이 대칭키 방식입니다. 비대칭키와 다른 점은 단 하나의 키만 사용한다는 것 입니다.

 

아까와 같은 예로 사용자 또는 서버는 하나의 대칭 키를 만들어 서로 공유합니다.

공유된 대칭 키를 이용하여 한쪽은 암호화 다른 한쪽은 복호화를 하여 데이터를 주고 받습니다.

접속이 종료되면 대칭 키는 폐기되며 새로운 접속 시 새로 생성이 됩니다