Por que não preciso regenerar chaves quando altero a senha de um usuário?

1

Temos uma caixa Linux (Ubuntu, mas isso não importa), digamos, somemachine.example.com e um usuário que tenha acesso a essa máquina, someuser .

Eu posso usar o SSH nessa máquina, fornecendo explicitamente uma senha para someuser da seguinte forma:

ssh [email protected]
Password: *****

... ou fornecendo um arquivo PEM (chave pública):

ssh -i ~/path/to/somemachine.pem [email protected]

Hoje eu tive que mudar a senha para someuser naquela caixa (usando o comando passwd ), e fiquei um pouco surpreso ao saber que eu não precisei regenerar novos keypairs (assim, novo arquivo PEM ) para esse usuário também.

Estou me perguntando: por quê? Simplesmente não há conexão entre a senha de someuser e a chave pública / privada? Em caso afirmativo, o Linux mantém, para cada usuário, um conjunto de credenciais , que podem ser senhas ou chaves públicas? Como o Linux associa chaves e senhas a usuários específicos?

    
por smeeb 15.09.2016 / 02:41

2 respostas

3
As chaves

ssh e as senhas de login são armazenadas em locais separados em praticamente qualquer sistema semelhante ao Unix. Não há razão para que (com exceção de 30 anos de história anteriores ssh ) os dois não pudessem ter usado o mesmo armazenamento. Mas o que temos agora é separado, com tentativas dispersas de armazenar a coleção de credenciais em gerentes-chave.

Normalmente, as informações de ssh de um usuário estão em $HOME/.ssh , enquanto as informações de login estão em /etc/passwd , /etc/shadow / , /etc/group e /etc/gshadow .

Um gerenciador de chaves poderia combiná-las, fornecendo senhas (ou informações análogas) conforme necessário. Mas essa é a exceção e não a regra.

Para não recomendar de uma forma ou de outra, eu trabalhei com SnareWorks um tempo atrás. Se você pesquisar no Google, ele apareceu em cena por volta de 2000. Ele coletou as credenciais para vários aplicativos (ou sistemas remotos) e associou a coleção a um usuário.

    
por 15.09.2016 / 02:46
1

As chaves SSH não vinculam a senha do usuário, são dois mecanismos de autenticação completamente separados. Quando as chaves ssh são usadas, o sshd procura em $HOME/.ssh/authorized_keys ou $HOME/.ssh/authorized_keys2 para que as chaves públicas tentem. São essas chaves públicas com a chave privada no cliente e algumas cripta mágica para autenticar o usuário.

Quando o ssh usa senha auth, ele usa o PAM para fazer a autenticação. O PAM pode autenticar o uso de várias maneiras, mas o mais comum é usar os logins de usuários locais. As credenciais de login dos usuários locais são armazenadas em /etc/passwd e suas senhas são armazenadas em /etc/shadow , as informações do grupo são armazenadas em /etc/group .

    
por 15.09.2016 / 02:52