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
.