Como saber se uma chave SSH pública tem uma senha

13

Esta é provavelmente uma pergunta noob, mas como posso determinar se a chave SSH pública que alguém me fornece possui uma frase secreta ou não?

Temos uma situação em que não estou gerando as chaves SSH para os usuários, mas quero garantir que todas as chaves SSH colocadas em um servidor tenham uma senha, mas sinto que a senha é apenas parte da chave privada.

Obrigado!

Peter Sankauskas
fonte

Respostas:

27

Isso não é algo que você pode determinar a partir da metade pública da chave. Mesmo que você possa determiná-lo, o que impede o usuário de removê-lo posteriormente?

Quando você remove a frase secreta do lado privado da chave, o lado público não muda.

James F
fonte
7

Você não pode dizer se uma chave privada tem uma frase secreta ou não.

James
fonte
3
Mais precisamente, as chaves públicas não possuem frases secretas. Somente chaves privadas fazem.
23409 Swoogan
-2

Eu acho que a senha é criptografia síncrona da chave privada, portanto não afetaria a chave pública. Tecnicamente, não afeta nenhuma das chaves, pois simplesmente criptografa os dados da chave privada.

Se você possui uma política referente à solicitação de senhas, também pode querer estabelecer uma política relativa ao ssh-agent e ao encaminhamento de agentes, pois armazena o soquete usado para acessar o processo ssh-agent em / tmp sem muita segurança fora das permissões de arquivo unix para proteger isto.

James
fonte
Não acredito que a chave esteja armazenada sem criptografia em / tmp. Acredito que ele esteja armazenado na memória da máquina original em que o usuário entrou na fase.
James
Desculpe, você está certo, uma chave não criptografada não está armazenada em / tmp. O soquete ssh-agent é armazenado em / tmp e qualquer pessoa com permissão unix para acessar o soquete pode usar as chaves que o ssh-agent possui para você. Ainda é uma grande preocupação de segurança.
James