ssh mapa de chave privada-pública para o cliente

3

Na comunicação ssh entre servidor e cliente, o cliente é autenticado por sua chave privada. Eu quero saber como o servidor sabe qual chave pública pertence ao cliente, se o servidor tem mais de uma chave pública em seu arquivo authorized_keys .

    
por Rajnish Kumar Soni 02.07.2017 / 20:08

2 respostas

2

O cliente envia seu ID de chave pública e verificações de servidor, se essa chave estiver na lista de authorized_keys .

  • O cliente começa enviando um ID para o par de chaves com o qual gostaria de se autenticar no servidor.

  • A verificação do servidor é o arquivo authorized_keys da conta na qual o cliente está tentando fazer login para o ID da chave.

  • Se uma chave pública com ID correspondente for encontrada no arquivo, o servidor gerará um número aleatório e usará a chave pública para criptografar o número.

  • O servidor envia ao cliente esta mensagem criptografada. Se o cliente realmente tiver a chave privada associada, ele poderá descriptografar a mensagem usando essa chave, revelando o número original.

link

    
por 02.07.2017 / 22:23
2

Isso é muito bem explicado na RFC4252 incluindo as mensagens enviadas pelo cliente e servidor:

  • A primeira mensagem SSH_MSG_USERAUTH_REQUEST contém o blob de chave pública que é usado para comparar com a chave armazenada em authorized_keys
  • Respostas do servidor com SSH_MSG_USERAUTH_PK_OK ou falha
  • Segundo SSH_MSG_USERAUTH_REQUEST contém novamente a chave pública (supondo que seja o blob novamente) junto com a assinatura sobre os dados conhecidos (incluindo a chave pública).

Os dois primeiros pontos não são obrigatórios e você pode fazer apenas o último (mas sondar qual tecla usar economiza um poder de computação).

    
por 03.07.2017 / 09:25

Tags