Eu preciso ter um novo par de chaves para um host adicional que terá permissão para fazer login no servidor (mas não posso compartilhar o par existente por motivos de segurança).
Agora, criei um novo par no servidor com o ssh-keygen -t rsa -f newkey.key
qual funcionou bem, copiei a chave para o cliente e tento fazer login usando ssh user@server -i newkey.key
, mas ele não me deixa entrar, mas, em vez disso, recebo:
$ ssh user@server -i newkey.key
Warning: Permanently added 'server' (ECDSA) to list ofknown hosts.
Permission denied (publickey).
$
Por que isso acontece e como faço isso funcionar? newkey.key
tem permissões definidas para 400
.
Um dos problemas mais comuns que vejo quando as pessoas tentam configurar a autenticação baseada em chave é que se esquecem de adicionar a metade pública do par de chaves ao
authorized_keys
arquivo.Ao
server.example.com
gerar o par de chaves pública/privada -Defina a senha (ou não) conforme apropriado.
Em seguida, coloque a metade pública no
authorized_keys
arquivo -Em seguida, copie a metade privada da chave para sua máquina cliente e você poderá se conectar -
Edite de acordo com @Haxiel e @RubberStamp (e meu próprio) que a chave privada não deve ser deixada no servidor que é usada para acessar.
CERTIFIQUE-SE DE REMOVER A CHAVE PRIVADA DO SERVIDOR A QUE É UTILIZADA PARA SE CONECTAR, a menos que não tenha outra alternativa. Este é um problema de segurança que é terrivelmente fácil de evitar.
As chaves devem ser geradas na máquina local e a chave pública copiada para a máquina remota via scp ou ssh-copy-id ... com a última escolha sendo preferida, pois garante que a chave pública seja colocada corretamente no remoto ~/ arquivo .ssh/authorized_keys junto com as permissões apropriadas nesse arquivo