Como o ssh escolhe a chave correta para usar?

4

Como o ssh-agent entende qual chave ele deve usar para qual servidor remoto?

Eu me deparei com diferentes perguntas e postagens que abordam esse tópico de alguma forma, mas ainda não estão claras para mim.

O que eu descobri é que se você quiser usar chaves ssh diferentes, você precisa usar a opção -i e especificar o caminho para a chave necessária ou pode configurar arquivos de Identidade que especificam qual par de chaves para qual host usar.

Mas isso significa que, por padrão, ssh-agent pode usar apenas um par de chaves e tentará usá-lo para todos os servidores remotos?

    
por volk 19.04.2016 / 21:36

3 respostas

3

But does it mean that by default ssh-agent can use only one key pair and it will try to use it for all remote servers?

Por padrão, ssh-agent usará todas as chaves adicionadas a todos os servidores que você conectar. Você pode limitar as chaves em ssh_config como na outra resposta.

As chaves têm impressões digitais, mas na primeira fase da autenticação de chave pública, as partes públicas são verificadas apenas na lista de servidores e, se não corresponderem, a autenticação é ignorada (geralmente para outra autenticação de senha ou chave).

    
por 19.04.2016 / 23:49
1

O SSH suporta um ~/.ssh/config file que permite especificar chaves diferentes para hosts diferentes. Então você poderia ter

Host github.com
    IdentityFile ~/.ssh/github.key
Host example.com
    IdentityFile ~/.ssh/example.key

Existe um bom tutorial sobre essa funcionalidade aqui

    
por 19.04.2016 / 21:48
-2

A "chave" (sem trocadilho) é baseada na impressão digital, conforme especificado em RFC4716 . Como explicado na man page do ssh:

When connecting to a server for the first time, a fingerprint of the
server's public key is presented to the user (unless the option
StrictHostKeyChecking has been disabled).  Fingerprints can be determined
using ssh-keygen(1):

           $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

If the fingerprint is already known, it can be matched and the key can be
accepted or rejected.

Em um resumo ASCII, aqui está impressão digital explicada com relação a qual chave é escolhida / usada:

ssh-keygen yourfingerprint
you ssh --> server (stores your fingerprint)
you ssh --> millions of other servers
you ssh initial server --> server --> Have I seen this fingerprint before?

ADICIONADO

Porque eu toquei em digitar prematuramente, as impressões digitais são armazenadas em:

~/.ssh/known_hosts
    
por 19.04.2016 / 22:03