Если у вас есть root-доступ к серверу и вы можете восстановить ssh-ключи для своих пользователей на случай их потери
И
вы уверены, что пользователь (как человек )не будет иметь несколько учетных записей пользователей и им нужно переключаться между ними в сеансе SSH (ну, они также могут открыть несколько сеансов SSH, если возникнет необходимость)
И
им никогда никогда не понадобится «физический» (через клавиатуру+монитор или через удаленную консоль для ВМ )доступ к серверу
И
нет пользователей с паролем -закрытый sudo
доступ (т.е. они либо вообще не имеют доступа к sudo, либо имеют доступ к sudo сNOPASSWD
)
Я думаю, ты поправишься.
У нас на работе много серверов, настроенных таким образом (только некоторым учетным записям требуется доступ к виртуальной машине через удаленную консоль vmware, остальные подключаются только через SSH с аутентификацией по ключу ).
В этом вопросе изначально упоминалось passwd --delete <username>
, что небезопасно :, при этом поле зашифрованного пароля в /etc/shadow
будет полностью пустым.
username::...
Если вы настроили свой sshd
на отказ от аутентификации по паролю, то это безопасно с SSH... Но если любая другая служба в вашей системе использует аутентификацию по паролю и не настроена на отклонение нулевых паролей, этот разрешает доступ без пароля! Вы не хотите этого.
adduser --disabled-passwd
создаст запись /etc/shadow
, где поле зашифрованного пароля представляет собой просто звездочку, т.е.
username:*:...
Это «зашифрованный пароль, который невозможно успешно ввести», т. е. это означает, что учетная запись действительна и технически разрешает вход в систему, но делает аутентификацию по паролю невозможной . Поэтому, если на вашем сервере есть какие-либо другие службы, основанные на пароле -аутентификации -, этот пользователь заблокирован от них.
Только методы аутентификации, в которых используется пароль, отличный от стандартного пароля учетной записи (, например. ключи SSH )будут работать для этого пользователя, для любой службы, которая использует системные файлы паролей в этой системе. Когда вам нужен пользователь, который может войти в систему только с ключами SSH, это то, что вам нужно.
Если вам нужно установить существующую учетную запись в это состояние, вы можете использовать эту команду:
echo 'username:*' | chpasswd -e
Существует третье специальное значение для поля зашифрованного пароля :adduser --disabled-login
, тогда поле будет содержать только один восклицательный знак.
username:!:...
Подобно звездочке, это делает невозможным успешную аутентификацию по паролю, но также имеет дополнительное значение :: он помечает пароль как «заблокированный» для некоторых инструментов администрирования. passwd -l
имеет почти такой же эффект, добавляя к существующему хэшу пароля восклицательный знак, что снова делает невозможным использование аутентификации по паролю.
Но вот ловушка для неосторожных:в 2008 году,версия команды passwd
, взятая из старого пакета shadow
, была изменена на -определение passwd -l
с «блокировки учетной записи» на «блокировку пароля». Заявленная причина - "для совместимости с другой версией passwd".
Если вы (как и я )узнали об этом давным-давно, это может стать неприятным сюрпризом. Не помогает делу и то, что adduser(8)
тоже, по-видимому, еще не осознает этого различия.
Часть, которая отключает учетную запись для всех методов аутентификации, фактически устанавливает значение даты истечения срока действия 1 для учетной записи :usermod --expiredate 1 <username>
. До 2008 года passwd -l
, происходящий из исходного набора shadow
, использовался для этого в дополнение к с префиксом пароля с восклицательным знаком -, но больше не делает этого.
Журнал изменений пакетов Debian говорит:
- debian/patches/494_passwd_lock-no_account_lock: Restore the previous behavior of passwd -l (which changed in #389183): only lock the user's password, not the user's account. Also explicitly document the differences. This restores a behavior common with the previous versions of passwd and with other implementations. Closes: #492307
Истории ошибок для ошибки Debian 492307 и ошибки 389183 могут быть полезны для понимания того, что стоит за этим.