클라이언트의 SSH 개인 키-공개 키 매핑

클라이언트의 SSH 개인 키-공개 키 매핑

authorized_keys서버와 클라이언트 간의 SSH 통신에서 클라이언트는 개인 키를 통해 인증합니다. 서버의 파일에 2개 이상의 공개 키가 있는 경우 서버는 어떤 공개 키가 클라이언트에 속하는지 어떻게 알 수 있는지 알고 싶습니다.

답변1

클라이언트는 공개 키 ID를 보내고 서버는 해당 키가 목록에 있는지 확인합니다 authorized_keys.

  • 클라이언트는 먼저 인증하려는 키 쌍의 ID를 서버에 보냅니다.

  • 서버는 클라이언트가 로그인하려는 계정의authorized_keys 파일에서 키 ID를 확인합니다.

  • 파일에서 일치하는 ID를 가진 공개 키가 발견되면 서버는 난수를 생성하고 공개 키를 사용하여 번호를 암호화합니다.

  • 서버는 이 암호화된 메시지를 클라이언트에게 보냅니다. 클라이언트가 연결된 개인 키를 소유하고 있는 경우 해당 키를 사용하여 메시지를 해독하고 원래 번호를 공개할 수 있습니다.

https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process

답변2

이것은RFC4252클라이언트와 서버 간에 주고받는 메시지를 포함합니다.

  • 첫 번째 메시지에는 SSH_MSG_USERAUTH_REQUEST저장된 키와 비교할 공개 키 blob이 포함되어 있습니다.authorized_keys
  • 서버 응답 SSH_MSG_USERAUTH_PK_OK또는 실패
  • 두 번째 항목 SSH_MSG_USERAUTH_REQUEST에는 공개 키(다시 Blob이라고 가정)와 알려진 데이터의 서명(공개 키 포함)이 포함됩니다.

처음 두 점은 필수 사항이 아니며 마지막 점만 수행할 수 있습니다(그러나 어떤 키가 사용되는지 조사하면 컴퓨팅 성능이 절약됩니다).

관련 정보