Eu tenho vários usuários, que com chaves SSH têm acesso a contas em outros servidores. Atualmente, tenho um script que coleta as chaves públicas ssh e as distribui na conta correta nos servidores corretos.
O que eu quero fazer é obter esse script para verificar se qualquer chave ssh de um usuário possui uma senha antes de aceitar a chave pública e distribuí-la.
Eu tentei uma série de coisas, como usar um ssh-agent
e ssh-add
em seguida, o problema surge quando ssh-add
se pediu senha.
Existe uma maneira de obter algo como openssl
verificar a senha, falhar levemente com um código de retorno, 1
se a chave tiver uma senha?
Obrigado!
Respostas:
Se um arquivo-chave usa uma senha, ele tem o atributo "Proc-Type:" definido com a palavra "ENCRYPTED" anexada.
Portanto, você pode determinar se um arquivo-chave usa uma senha, executando-o
find
egrep
para ver se ele possui a sequência 'ENCRYPTED'.imprime uma lista de arquivos que possuem senhas. Em seguida, você pode associá-los a uma lista de todos os arquivos-chave para destacar aqueles que não usam uma senha. Uma lista de todos os arquivos-chave pode ser obtida, por exemplo, deixando o
-exec
parâmetro de fora, da seguinte maneira:fonte
Proc-Type
cabeçalho não é gravado no arquivo, apesar de estar criptografado.