Quais chaves privadas são testadas pelo ssh sem configuração?

5

Eu sei que existem várias questões sobre chaves ssh e como configurá-lo. Mas eu não encontrei ninguém para responder minha pergunta.

Então aqui está: Eu tenho várias chaves ssh no meu diretório .ssh . Para alguns remotos diferentes chaves.

Agora eu não configurei em .ssh/config qual chave usar para qual host, nem os adicionei a um agente manualmente, o que algumas perguntas aqui já mencionadas. Acabei de criar as chaves com ssh-keygen e funciona.

Agora, gostaria de saber quem é responsável por isso e quais chaves são testadas automaticamente? Eu tenho algo em mente que diz que cinco chaves são verificadas automaticamente quanto à compatibilidade - mas não consigo encontrar onde encontrei essa informação.

O ssh-keygen adiciona automaticamente essas chaves a um agente? Ou o ssh procura por qualquer chave correspondente por padrão?

    
por Bertram Nudelbach 19.06.2012 / 17:31

3 respostas

5

O cliente ssh verificará todas as suas chaves até encontrar uma que corresponda.

É assim que funciona (isso é muito simplificado, antes disso uma dança bem complexa foi feita para criptografar tudo isso):

  • O servidor cria um token de autenticação.
  • O token é criptografado usando sua chave pública no servidor.
  • O servidor envia o token criptografado para o cliente.
  • O cliente tenta descriptografar o token, usando todas as chaves privadas conhecidas.
  • Se for bem sucedido, enviará o token descriptografado de volta ao servidor.
  • Se o token corresponder ao servidor, ele deixará o cliente entrar.

Quais arquivos são chaves depende do cliente.

Para o cliente Openssh (cliente padrão do Ubuntu), de acordo com sua página man, os arquivos que devem ser chaves privadas são ./sshid_rsa, .ssh / id_dsa, .ssh / id_ecdsa, além daqueles dados após o -i flag (suporta múltiplos arquivos) e aqueles declarados no arquivo de configuração.

Você pode dar a opção -v para imprimir uma linha quando tentar usar qualquer arquivo como uma chave. Este é um exemplo de um login sem chave:

$ ssh -v www.hostremoved.com
OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
<...>
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/javier/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/javier/.ssh/id_dsa
debug1: Trying private key: /home/javier/.ssh/id_ecdsa
debug1: Next authentication method: password
<...>

Como você pode ver, ele imprime todas as chaves que ele tenta. Você pode usar isso em seu sistema para descobrir quais arquivos o ssh está usando em seu próprio sistema.

Abaixo você pode ver a saída se alguma chave existente for encontrada e tentada

debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: user@xyz

user@xyz é a informação anexada à chave pública.

Se você está se perguntando como seu cliente ssh encontra suas chaves privadas, isso não é mágico. No Gnome (xfce e KDE também), há um agente ssh especial que adiciona automaticamente chaves no diretório .ssh que possuem uma chave pública correspondente com o final .pub .

Se você não tem um agente ssh tão confortável, você terá que adicionar suas chaves privadas com ssh-add key .

    
O
por Javier Rivera 19.06.2012 / 18:49
2

Supondo que você tenha copiado a chave pública para o arquivo authorized_keys na máquina remota, o cliente ssh verificará a chave privada na máquina local que corresponda à chave pública na máquina remota.

    
por jackweirdy 19.06.2012 / 18:14
1

Copiado / colado de ssh_config (5) no openssh-client 1: 5.3p1-3ubuntu7:

  

IdentityFile

     

Especifica um arquivo do qual o RSA ou o DSA do usuário   identidade de autenticação é lida. O padrão é ~ / .ssh / identity para   versão do protocolo 1, e ~ / .ssh / id_rsa e ~ / .ssh / id_dsa para protocolo   versão 2. Adicionalmente, quaisquer identidades representadas pelo   agente de autenticação será usado para autenticação.

     

O nome do arquivo pode usar a sintaxe do til para se referir à home do usuário   diretório ou um dos seguintes caracteres de escape: "% d" (local   diretório pessoal do usuário), "% u" (nome de usuário local), "% l" (host local   nome), "% h" (nome do host remoto) ou "% r" (nome do usuário remoto).

     

É possível ter vários arquivos de identidade especificados em   arquivos de configuração; todas essas identidades serão tentadas em seqüência.

A linha inferior é o que depende da versão do protocolo. Para a versão 2 (mais provável nos dias de hoje), id_rsa e id_dsa são tentados nessa ordem, de acordo com o documento acima. As versões mais novas podem incluir outros tipos de chaves por padrão, como id_ecdsa. Verifique essa man page em sua versão para detalhes.

    
por Wren T. 19.06.2012 / 20:27

Tags