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
- 이 명령어를 실행하면, 키 페어가 생성됩니다.
-t ed25519: 키 타입을 지정합니다.ed25519는 더 안전하고 최신 방식입니다.-C "your_email@example.com": 키에 주석을 추가합니다.-f ~/.ssh/my_custom_key: 키 파일의 경로와 이름을 지정합니다. 여기서는~/.ssh/디렉토리에my_custom_key라는 이름으로 키를 생성합니다.
2.2 대칭키 방식
- 서로의 신원을 확인한 후, 이제 정보를 주고받을 차례입니다.
- 주고받는 과정에서 정보가 유출되지 않도록 정보를 암호화해서 주고받는데, 여기서 사용되는 방식이 대칭키 방식입니다.
- 대칭키 방식에서는 비대칭키 방식과 달리 한 개의 키만을 사용하며, 이를 대칭 키라고 합니다.
3. 설정
- 클라이언트 쪽에서 config 파일을 작성하고 서버 쪽 특정 디렉토리에 클라이언트의 공개 키를 위치시키면 간단하게 SSH로 접속할 수 있습니다.