Лучше использовать открытые ключи для SSH. Так что мой sshd_config
имеет PasswordAuthentication no
.
Некоторые пользователи никогда не входят в систему, например, пользователь sftp с оболочкой /usr/sbin/nologin
. Или системный аккаунт.
Таким образом, я могу создать такого пользователя без пароля с adduser gary --shell /usr/sbin/nologin --disabled-password
.
Это хорошая / плохая идея? Есть ли последствия, которые я не рассматривал?
sudo
доступа (либо из-за того, что у них вообще нет разрешений sudo, либо из-за того, что у них есть разрешение sudoNOPASSWD
), выбранный вами ответ должен быть подходящим. Я отправил редактирование этого ответа, чтобы включить вопрос о sudo, но решил, что тем временем я вам его здесь обзвоню.Ответы:
Если у вас есть root-доступ к серверу и вы можете сгенерировать ssh-ключи для своих пользователей в случае их потери
И
Вы уверены, что у пользователя (как человека) не будет нескольких учетных записей, и им нужно переключаться между ними в сеансе SSH (ну, они также могут открыть несколько сеансов SSH, если возникнет такая необходимость)
И
им никогда не понадобится «физический» (через клавиатуру + монитор или через удаленную консоль для ВМ) доступ к серверу
И
ни один пользователь не имеет доступа с паролем
sudo
(то есть у них либо нет доступа к sudo, либо он имеет доступ к sudoNOPASSWD
)Я думаю, что ты будешь хорошим.
У нас на работе настроено много серверов (только некоторым учетным записям необходим доступ к виртуальной машине через удаленную консоль vmware, другие подключаются только через SSH с аутентификацией pubkey).
источник
PasswordAuthentication no
то это другая проблема (пользователь не сможет войти в любом случае).Этот вопрос изначально упоминался,
passwd --delete <username>
что небезопасно : при этом поле зашифрованного пароля в/etc/shadow
будет полностью пустым.Если вы настроили ваш
sshd
отказ от аутентификации по паролю, то это безопасно с SSH ... Но если любая другая служба в вашей системе использует аутентификацию по паролю и не настроена на отклонение пустых паролей, это позволяет получить доступ без пароля! Ты не хочешь этого.adduser --disabled-passwd
создаст/etc/shadow
запись, где поле зашифрованного пароля будет просто звездочкой, т.е.Это «зашифрованный пароль, который никогда не может быть успешно введен», то есть это означает, что учетная запись является действительной и технически разрешает вход в систему, но делает невозможной успешную аутентификацию по паролю . Поэтому, если на вашем сервере есть какие-либо другие службы на основе парольной аутентификации, этот пользователь заблокирован от них.
Для этого пользователя будут работать только те методы аутентификации, которые используют что-то отличное от стандартного пароля учетной записи (например, ключи SSH) для любой службы, которая использует файлы системных паролей в этой системе. Когда вам нужен пользователь, который может войти только с ключами SSH, это то, что вам нужно.
Если вам нужно установить существующую учетную запись в это состояние, вы можете использовать эту команду:
Существует третье специальное значение для поля зашифрованного пароля:
adduser --disabled-login
тогда поле будет содержать только один восклицательный знак.Как и звездочка, это делает невозможной успешную аутентификацию по паролю, но она также имеет дополнительное значение: она помечает пароль как «заблокированный» для некоторых инструментов администрирования.
passwd -l
имеет почти такой же эффект, добавляя префикс существующего хэша пароля с восклицательным знаком, что снова делает невозможным использование аутентификации по паролю.Но вот ловушка для неосторожных: в 2008 году версия
passwd
команды, которая приходит из старогоshadow
пакета, была изменена с того, чтобы переопределить ееpasswd -l
с «блокировки учетной записи» на «блокировку пароля». Заявленная причина - «для совместимости с другой версией passwd».Если вы (как и я) узнали это давно, это может стать неприятным сюрпризом. Это не помогает вопросам, которые
adduser(8)
, очевидно, еще не знают об этом различии.Та часть , которая блокирует учетную запись для всех методов аутентификации фактически устанавливая значение даты истечения срока действия 1 за счет:
usermod --expiredate 1 <username>
. До 2008 годаpasswd -l
это происходит изshadow
исходного комплекта, используемого для этого, в дополнение к префиксу пароля с восклицательным знаком - но больше не делает этого.Список изменений пакета Debian гласит:
Истории ошибок для ошибок Debian 492307 и 389183 могут быть полезны для понимания того, что стоит за этим.
источник
adduser --disabled-passwd
- поэтому, если какой-либо другой сервис разрешает аутентификацию по паролю, тогда пользователь может войти без пароля?adduser --disabled-password
частности, проверка подлинности пароля невозможна для этой учетной записи.*
чтобы люди читали его первым.passwd
исходном коде в 2008 году. Разве вам не нравится, когда что-то, чему вы когда-то научились, а затем положились, уже не так?