Faça o que fizer, não deixe a conta no estado deixado por passwd -u
, com um campo de senha em branco: isso permite logins sem digitar uma senha (exceto pelo SSH, porque o SSH recusa isso).
Altere a conta para não ter senha, mas seja desbloqueada. Uma conta não terá senha se o hash da senha no banco de dados de senhas não for o hash de nenhuma sequência. Tradicionalmente, uma cadeia de um caractere como *
ou !
é usada para isso.
As contas bloqueadas também usam um marcador especial no campo de senha que faz com que a sequência não seja o hash de nenhuma sequência. O marcador depende do sistema. No Linux, o passwd
comando marca senhas bloqueadas colocando a !
no início, e o OpenSSH trata a conta como bloqueada se o campo começar com !
. Outras variantes do Unix tendem a usar mecanismos semelhantes, mas não idênticos, portanto, tome cuidado se o banco de dados de senhas for compartilhado entre uma rede heterogênea.
No Linux, você pode desativar o acesso baseado em senha a uma conta enquanto permite o acesso SSH (com algum outro método de autenticação, geralmente um par de chaves) com
usermod -p '*' username
O usuário não poderá alterar a conta novamente para ter uma senha, pois isso exige que ele insira uma senha válida.
Se desejar, você pode configurar o SSH para recusar a autenticação de senha, independentemente de a conta ter uma senha. Você ainda precisará providenciar para que o SSH não considere a conta bloqueada. Por exemplo, no Linux, você precisará remover o !
campo da senha (mas não deixe o campo vazio - configure-o *
como explicado acima ) Para desabilitar a autenticação de senha para SSH, adicione uma PasswordAuthentication
diretiva a /etc/sshd_config
ou /etc/ssh/sshd_config
(o que estiver no seu sistema). Use um Match
bloco para fazer com que essa diretiva se aplique apenas a um usuário específico; Match
blocos devem aparecer
…
Match User username
PasswordAuthentication no