Usar a autenticação de chave pública ignora outros métodos de autenticação, por isso não é necessário
para usar PermitRootLogin without-password
, é perigoso se alguém tentar se logar como root e não for forçado a apresentar uma chave pública.
Para realizar o que você deseja, desabilitando a autenticação de senha em sshd, use PasswordAuthentication no
em seu sshd_config
.
Esta configuração não afetará o conteúdo de /etc/shadow
, onde suas senhas de usuário são armazenadas. Se outro aplicativo quiser autenticar via senha (digamos CUPS, por exemplo), isso ainda funcionará.
Se você quiser desabilitar isso, a exclusão de uma senha de usuário com o comando indicado acima não funcionará. Ele permite logins sem senha para um determinado usuário, o que definitivamente não adiciona segurança.
A emissão de passwd -l <user>
realizará o que você pretendia. Tenha em mente que outros aplicativos do que o ssh podem ter um problema com isso, porque eles esperam autenticação de senha em sua configuração padrão (sudo, su, CUPS, etc.)
Citações de man passwd
:
-l, --lock
Lock the password of the named account. This option disables a password by changing it to a value which matches no possible encrypted value (it adds a ´!´ at the beginning of the password).
Note that this does not disable the account. The user may still be able to login using another authentication token (e.g. an SSH key). To disable the account, administrators should use usermod
--expiredate 1 (this set the account's expire date to Jan 2, 1970).
Users with a locked password are not allowed to change their password.