Teórico
Sinto que preciso esclarecer algumas coisas que você pode ou não entender sobre o funcionamento do SSH:
No contexto do SSH, Passwordless
pode se referir a duas coisas:
- Autenticação por SSH sem fornecer uma senha pela rede; ou seja, usando autenticação de chave pública
- Autenticando por SSH sem fornecer uma senha pela rede, e sem usar uma senha para proteger a descriptografia de sua chave privada
Portanto, existem três modos possíveis:
- Autentique fornecendo diretamente uma senha. Nenhuma chave pública / privada é usada.
- Autentique por par de chaves público / privado, mas forneça uma senha na sua máquina cliente para descriptografar a chave privada e torná-la utilizável. Isso é feito usando
ssh-agent
. A senha de decriptografia da chave privada é armazenada em cache para que seja fornecida apenas uma vez pela duração da sua sessão de login; depois disso, a senha será salva nossh-agent
. - Autentique por par de chaves público / privado, mas o par de chaves não é protegido por senha, portanto, o usuário não fornece senhas.
O segundo modo é o mais seguro. Você pode testar esse modo criando um par de chaves protegido por senha, certifique-se de que ssh-agent
esteja configurado corretamente (como é nas distribuições Linux modernas) e que ele "simplesmente funcione": quando você faz login em um servidor SSH que usa sua chave privada, você recebe uma solicitação para digitar a senha. Toda vez que depois disso, até você sair, ele "simplesmente funciona" sem nenhum prompt.
Prático
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/admin/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/admin/.ssh/id_dsa
debug1: Trying private key: /home/admin/.ssh/id_ecdsa
debug1: Next authentication method: password
Tente o seguinte:
-
Renomeie o arquivo
known_hosts
para outra coisa (comoknown_hosts.bak
) no cliente e no servidor -
No servidor, logado como
user
, tentechmod go-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys -
No cliente, logado como
admin
, tentechmod 700 ~/
chmod 700 ~/.ssh
chmod 400 ~/.ssh/id_rsa chmod 400 ~/.ssh/id_rsa.pub
#if the admin user doesn't have a group, create it and make it the admin user's primary group
chown -R admin:admin ~/.ssh -
Certifique-se de que o conteúdo do
~/.ssh/id_rsa.pub
do cliente (observe, o.pub
é crítico ) está no~/.ssh/authorized_keys
do servidor em uma linha (sem quebra de linha - mas não confunda encapsulamento de editor de texto e quebra de linha; usecat ~/.ssh/authorized_keys
para garantir que você está exibindo o arquivo sem quebra) e que o conteúdo do~/.ssh/id_rsa
do cliente não é em qualquer lugar no servidor ou, na verdade, em qualquer lugar, exceto aquele lugar no cliente. Nota : Se você colocou acidentalmente~/.ssh/id_rsa
(a chave privada) no servidor, eu recomendo que você exclua seu par de chaves e crie um novo, começando do zero. Você terá que colocar o novoid_rsa.pub
no arquivoauthorized_keys
. -
???
-
Lucro!