new user with authorized_keys: como NÃO solicitar a senha antiga ao definir uma?

4

quando eu crio um usuário no sistema com o Chef, sempre carrego sua chave pública em .ssh/authorized_keys . Quando o usuário efetua login pela primeira vez, ele é obrigado a "alterar" sua senha. Para isso, uma senha stub é usada, então ele pode digitar a senha "atual". É assim que parece agora:

ssh user@host 
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user.
(current) UNIX password: 
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Connection to host closed.

A senha atual é bem conhecida (vou lhe contar um segredo: initial ), que é inútil de qualquer maneira. Como posso evitar pedir a senha current pela primeira vez? (Para enfatizar mais, é seguro, porque o usuário já autenticou com sua chave pública).

    
por Motiejus Jakštys 15.01.2012 / 12:58

1 resposta

5

A senha de um usuário pode ser excluída com:

passwd -d <user> 

(como root / com sudo).

A autenticação baseada em chave SSH ainda funcionará, mas não será necessária uma senha para definir uma nova. Eu testei isso no Ubuntu agora.

tom@slappy:~▶ ssh foo@shell
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.35.4-rscloud x86_64)

 * Documentation:  https://help.ubuntu.com/
Last login: Sun Jan 15 12:10:44 2012 from 12deee6f.bb.sky.com
foo@shell:~$ passwd
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
foo@shell:~$

Quanto à segurança: não vejo por que isso deveria ser um problema. Qualquer pessoa que tenha a chave privada será capaz de se conectar e fazer mal, independentemente de uma senha ser definida ou não. Conhecer a senha depois de conectá-la pode fazer com que ela cause mais danos se a configuração do seu sudoer estiver um pouco deficiente, mas isso indica que você tem maiores problemas de segurança, na minha opinião.

    
por 15.01.2012 / 13:11