Como o UNIX sabe qual chave privada procurar?

0

Eu tenho um par de chaves pública / privada. Eu coloquei o conteúdo da minha chave pública no arquivo .ssh / authorized_keys do meu servidor. Quando eu SSH para ele, ele reconhece automaticamente a minha chave e deixa-me entrar

No entanto, se eu usar a SAME chave pública, com uma chave privada diferente, e tentar SSH, o servidor não me deixa entrar. Como ele sabe qual chave privada procurar?

Em segundo lugar, como posso alterar qual chave privada ele deve aceitar para essa chave pública específica?

    
por Henley Chiu 14.07.2014 / 01:40

3 respostas

0

como você criou uma chave pública para duas chaves privadas diferentes? afaik isso é impossível com o ssh-keygen. se você não o fez (o que eu suspeito), seu problema é simplesmente que você não entendeu o princípio chave assimétrico:

Ao gerar o par de chaves, o ssh-keygen gera uma chave privada e uma chave pública, que correspondem uma à outra. você faz upload da chave pública para o servidor e, ao se conectar, o ssh criptografa algumas informações usando sua chave privada. então o servidor tenta descriptografá-lo com a chave pública que você deu a ele, e se isso funciona, ele sabe que você tem a chave privada correta correspondente à chave pública que ele conhece e então verifica se você é A) você ou B) alguém que roubou sua chave privada. no caso A, está tudo bem, no caso B, é simplesmente sua culpa e você deve proteger melhor sua chave privada: D

EDITAR:

se você quiser usar duas chaves privadas diferentes, basta fazer o upload de ambas as chaves públicas correspondentes para o servidor.

    
por 14.07.2014 / 02:27
0

Cada chave pública é compatível com exatamente uma chave privada, no sentido de que um servidor ou qualquer outro computador pode usar uma chave pública para descriptografar uma mensagem que foi criptografada usando a chave privada correspondente. No entanto, o conhecimento da chave pública não permite que o servidor localize a chave privada. 1 As chaves públicas e privadas são geradas ao mesmo tempo por ssh-keygen ou qualquer ferramenta equivalente usada para criar suas chaves. .

Como parte da (versão simplificada de "brinquedo") do processo de login do SSH, o servidor cria uma string, chamada nonce e envia para o cliente (seu computador pessoal). O cliente criptografa o nonce com sua chave privada e envia o resultado de volta ao servidor. Em seguida, o servidor tenta descriptografar esse resultado com cada chave pública listada no arquivo .ssh/authorized_keys e, se encontrar uma para a qual o processo de descriptografia resulte no nonce original, ele concederá acesso. Observe que, em nenhum momento desse processo, o servidor jamais teve acesso ou conhece alguma coisa sobre a chave privada.

Como cada chave pública corresponde exatamente a uma chave privada, de uma maneira fixada pelo algoritmo de criptografia da chave (RSA ou DSA ou ECDSA), não é possível alterar a chave privada que o servidor aceitará para uma determinada chave pública. Se você quiser usar uma chave privada diferente, você precisa gerar a chave pública correspondente e colocá-la no arquivo .ssh/authorized_keys também.

1 tecnicamente, mas demoraria mais do que a idade do universo

    
por 14.07.2014 / 02:27
0

Você pode ter muitas entradas em authorized_keys. Eu não sei o método específico usado no lado do servidor para coincidir com o par de chaves, mas funciona.

Para responder à segunda pergunta mais importante, você gera chaves em pares. Eles só trabalham uns com os outros. Você não pode gerar uma nova chave privada para ir com uma chave pública específica ou ao contrário, você deve gerar um novo par.

Portanto, se você tiver 10 usuários (por exemplo), poderá gerar 10 pares de chaves para que, quando chegar a hora de bloquear um único usuário, remova a chave pública correspondente de authorized_keys, processando assim o correspondente chave privada inútil.

    
por 14.07.2014 / 02:36

Tags