1. SSH란?
- SSH는 Secure Shell의 줄임말로, 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜입니다.
- 기존 원격 접속은 '텔넷(Telnet)'이라는 방식을 사용했는데, 암호화를 제공하지 않기 때문에 보안상 취약하다는 단점이 있습니다.
- 이를 보완하기 위해 SSH 기술이 등장했고, 현재 원격 접속 보안을 위한 필수적인 요소로 자리 잡고 있습니다.
2. SSH 동작원리
- SSH는 연결 상대를 인증하고 안전한 정보 전달을 위해 여러 가지 암호화 기술을 사용합니다.
- SSH는 비대칭키, 대칭키, 해싱 암호화 기술을 사용합니다.
2.1 비대칭키 방식
- 가장 먼저 사용자와 서버가 서로의 정체를 증명해야 합니다. 이 시점에서 사용되는 것이 비대칭키 방식입니다.
- 비대칭키 방식에서는 서버 또는 사용자가 Key Pair(키 페어, 키 쌍)를 생성합니다.
- 키 페어는 공개 키와 개인 키의 두 가지로 이루어진 한 쌍을 뜻하며, 보통 공개 키의 경우 .pub, 개인 키의 경우 .pem의 파일 형식을 띕니다.
- 클라이언트가 키 페어를 생성할 경우 공개 키를 서버에 전송합니다.
- 서버는 공개 키를 받아서, 이 공개 키로 랜덤한 값을 생성해 클라이언트에게 전송합니다.
- 이 값은 클라이언트가 올바른 키 페어를 가지고 있는지 확인하는 일종의 시험지입니다.
- 클라이언트는 이 시험지를 개인 키로 풀어서 서버에 전송합니다.
- 서버는 전송받은 값과 자신이 처음 보낸 값을 비교하며, 값이 같으면 클라이언트를 신뢰할 수 있는 사용자로 판단하고 접속을 허용합니다.
- 이렇게 최초 접속 시 클라이언트와 서버 간의 인증 절차가 비대칭키 방식을 통해 완료됩니다.
2.1.1 비대칭키 생성 예시
$ ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/my_custom_key