Em primeiro lugar, há numerosas documentações detalhadas, muito bem escritas, sobre como configurar ou configurar a autenticação baseada em chaves públicas, que estão disponíveis on-line. Por favor, dê uma olhada em um deles e veja se você seguiu tudo corretamente. Aqui é um deles. Então eu não vou repetir isso de novo.
O conceito básico é (copiado de aqui ):
Key-based authentication uses two keys, one "public" key that anyone is allowed to see, and another "private" key that only the owner is allowed to see. To securely communicate using key-based authentication, one needs to create a key pair, securely store the private key on the computer one wants to log in from, and store the public key on the computer one wants to log in to.
Agora, no registro de depuração que você postou:
- Parece que há dois usuários diferentes envolvidos.
/home/theo/.ssh/authorized_keys
e/home/tbouge/.ssh/id_rsa
. Você está tentando fazer o login como um usuário para o diretório pessoal de outro usuário? - O erro
Postponed publickey for theo..
significa autenticação indesejada método foram tentados antes do método de chave pública. O SSH tentará cada método de autenticação ativado na configuração, um após o outro. No seu caso, você temGSSAPIAuthentication yes
ativado o que não está usando. Você pode desativá-lo com segurança fazendoGSSAPIAuthentication no
. -
debug2: we did not send a packet, disable method
é muito provavelmente que não pode processar o arquivo de chave privada (permissão de arquivo ou problema de nome). O SSH é muito sensível às permissões de diretório e arquivo em computadores locais e remotos. (chown user_name:user_group -R /home/user
,chmod 700 /home/.ssh
,chmod 600 /home/.ssh/authorized_keys
). Portanto, verifique se os seus estão configurados corretamente. Veja isto: link -
Quanto ao terceiro erro:
Permission denied (public key).
, há algumas coisas a verificar.- Nome de usuário incorreto
- Par de chaves incorreto
-
Host alvo incorreto
- Veja mais detalhes: link
A parte seguinte é um pouco confusa:
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 1047
debug2: input_userauth_pk_ok: fp SHA256:{REDACTED}
debug3: sign_and_send_pubkey: RSA SHA256:{REDACTED}
debug2: we did not send a packet, disable method
Para entender melhor, vamos percorrer o processo de autenticação passo a passo, conforme descrito aqui em digitalocean :
- O cliente começa enviando um ID para o par de chaves que gostaria de autenticar com o servidor.
- A verificação do servidor é o arquivo authorized_keys da conta na qual o cliente está tentando efetuar 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.
- O cliente combina o número descriptografado com a chave de sessão compartilhada que está sendo usada para criptografar a comunicação e calcula o hash MD5 desse valor.
- O cliente envia esse hash MD5 de volta ao servidor como uma resposta à mensagem numérica criptografada.
- O servidor usa a mesma chave de sessão compartilhada e o número original enviado para o cliente para calcular o valor MD5 sozinho. Ele compara seu próprio cálculo com o que o cliente enviou de volta. Se esses dois valores corresponderem, isso prova que o cliente possuía a chave privada e o cliente está autenticado.
No seu caso, como você pode ver, o computador remoto aceitou somente o seu public key
, criptografou o pacote com essa chave e o enviou de volta para o computador cliente. Agora o computador cliente precisa provar que tem o private key
correto. Com apenas o direito private_key, ele pode descriptografar a mensagem recebida e enviar uma resposta de volta. Nesse caso, o cliente não está conseguindo fazer isso e o processo de autenticação é finalizado sem sucesso.
Espero que isso ajude você a entender os problemas e resolvê-los.