SSH ignorando usuário e login com outro

0

Depois de criar um novo usuário (newuser) em uma máquina EC2 (ubuntu), adicione o authorized_key e tente ssh nele, ele não funciona. Agora isso é tudo bem e dandy se ele falhar, mas na verdade é bem-sucedido fazer login com o usuário antigo, mesmo se -l ou user@ estiver definido no comando.

Como é possível que o sshd esteja ignorando o usuário e retrocedendo para um login anterior? Não importa o que eu tente, menos de remover a chave do outro usuário e reiniciar o servidor ssh, não é possível fazer o login como o novo usuário.

➜  ~ ssh -l newuser thehost
Last login: Thu Nov  2 10:09:08 2017 from 5.x.x.x
ubuntu@ip-172-x-x-x:~$ whoami
ubuntu
➜  ~ ssh newuser@thehost
Last login: Thu Nov  2 10:11:17 2017 from 5.x.x.x
ubuntu@ip-172-x-x-x:~$ whoami
ubuntu

Eu especulo que tem algo a ver com o agente ssh ou usar as chaves, mas isso é terrivelmente confuso para entender e eu nunca cruzei com isso antes das últimas duas semanas, então eu não sei se é um novo recurso ou o quê.

edit: Parece que pode ter algo a ver com a autenticação do PAM e algum armazenamento em cache da chave, uma vez que ignora completamente o nome de usuário. Você pode digitar usuários inválidos ou qualquer coisa e ele ainda fará login com sucesso.

    
por guax 02.11.2017 / 11:22

1 resposta

1

O SSH tentará todas as chaves no arquivo ~/.ssh/authorized_keys até encontrar um que corresponda ou não autentique. Depois que a chave pública auth falhar, ele tentará o próximo método de autenticação, se houver um.

Portanto, se você tiver a chave pública antiga colocada primeiro no arquivo ~/.ssh/authorized_keys do host remoto, a chave antiga será a primeira chave encontrada.

No lado do host local, o agente ssh entra em jogo. Chaves privadas serão adicionadas ao agente ssh em cache e essas chaves serão tentadas até corresponder à chave pública do host remoto.

    
por 02.11.2017 / 13:59