Что бы вы ни делали, не оставляйте учетную запись в оставленном состоянии passwd -u
с пустым полем пароля: это позволяет входить в систему без ввода пароля (кроме как через SSH, потому что SSH отказывается от этого).
Измените учетную запись, чтобы не иметь пароля, но быть разблокированным. У учетной записи нет пароля, если хэш пароля в базе данных паролей не является хешем какой-либо строки. Традиционно для этого используется односимвольная строка, такая как *
или !
.
Заблокированные учетные записи также используют специальный маркер в поле пароля, чтобы строка не была хешем какой-либо строки. Маркер зависит от системы. В Linux passwd
команда помечает заблокированные пароли, ставя !
в начале, а OpenSSH рассматривает учетную запись как заблокированную, если поле начинается с !
. Другие варианты Unix, как правило, используют похожие, но не идентичные механизмы, поэтому позаботьтесь о том, чтобы ваша база паролей использовалась в гетерогенной сети.
В Linux вы можете отключить основанный на пароле доступ к учетной записи, одновременно разрешая доступ SSH (с помощью другого метода аутентификации, обычно пары ключей) с
usermod -p '*' username
Пользователь не сможет изменить учетную запись обратно на пароль, потому что это требует от него ввести действительный пароль.
Если вы хотите, вы можете вместо этого настроить SSH на отказ от аутентификации по паролю, независимо от того, есть ли у учетной записи пароль. Вам все равно нужно будет принять меры к тому, чтобы SSH не считал учетную запись заблокированной, поэтому, например, в Linux вам нужно будет удалить поле !
из пароля (но не делайте это поле пустым - установите его так, *
как описано выше). ). Чтобы отключить аутентификацию по паролю для SSH, добавьте PasswordAuthentication
директиву /etc/sshd_config
или /etc/ssh/sshd_config
(в зависимости от того, какая она есть в вашей системе). Используйте Match
блок, чтобы эта директива применялась только к конкретному пользователю; Match
блоки должны появиться
…
Match User username
PasswordAuthentication no