authorized_keys
서버와 클라이언트 간의 SSH 통신에서 클라이언트는 개인 키를 통해 인증합니다. 서버의 파일에 2개 이상의 공개 키가 있는 경우 서버는 어떤 공개 키가 클라이언트에 속하는지 어떻게 알 수 있는지 알고 싶습니다.
답변1
클라이언트는 공개 키 ID를 보내고 서버는 해당 키가 목록에 있는지 확인합니다 authorized_keys
.
클라이언트는 먼저 인증하려는 키 쌍의 ID를 서버에 보냅니다.
서버는 클라이언트가 로그인하려는 계정의authorized_keys 파일에서 키 ID를 확인합니다.
파일에서 일치하는 ID를 가진 공개 키가 발견되면 서버는 난수를 생성하고 공개 키를 사용하여 번호를 암호화합니다.
서버는 이 암호화된 메시지를 클라이언트에게 보냅니다. 클라이언트가 연결된 개인 키를 소유하고 있는 경우 해당 키를 사용하여 메시지를 해독하고 원래 번호를 공개할 수 있습니다.
답변2
이것은RFC4252클라이언트와 서버 간에 주고받는 메시지를 포함합니다.
- 첫 번째 메시지에는
SSH_MSG_USERAUTH_REQUEST
저장된 키와 비교할 공개 키 blob이 포함되어 있습니다.authorized_keys
- 서버 응답
SSH_MSG_USERAUTH_PK_OK
또는 실패 - 두 번째 항목
SSH_MSG_USERAUTH_REQUEST
에는 공개 키(다시 Blob이라고 가정)와 알려진 데이터의 서명(공개 키 포함)이 포함됩니다.
처음 두 점은 필수 사항이 아니며 마지막 점만 수행할 수 있습니다(그러나 어떤 키가 사용되는지 조사하면 컴퓨팅 성능이 절약됩니다).