SSH не позволит мне войти, потому что учетная запись заблокирована. Я хочу разблокировать пользователя на моем сервере для авторизации с открытым ключом через ssh, но не включаю вход с паролем.
Я пробовал:
# passwd -u username
passwd: unlocking the password would result in a passwordless account.
You should set a password with usermod -p to unlock the password of this account.
Записи журнала авторизации:
Mar 28 00:00:00 vm11111 sshd[11111]: User username not allowed because account is locked
Mar 28 00:00:00 vm11111 sshd[11111]: input_userauth_request: invalid user username [preauth]
passwd -u
плохая идея Смотрите ответ Джайлза ниже.Ответы:
Разблокируйте учетную запись и дайте пользователю сложный пароль, как подсказывает @Skaperen.
Отредактируйте
/etc/ssh/sshd_config
и убедитесь, что у вас есть:Убедитесь, что строка не закомментирована (
#
в начале) и сохраните файл. Наконец, перезапуститеsshd
сервис.Прежде чем сделать это, убедитесь, что ваша аутентификация с открытым ключом работает в первую очередь.
Если вам нужно сделать это только для одного (или небольшого числа) пользователей, оставьте
PasswordAuthentication
включенным и вместо этого используйтеMatch User
:Поместите в конец файла, как он действителен до следующей
Match
команды или EOF.Вы также можете использовать
Match Group <group name>
или отрицаниеMatch User !bloggs
Как вы упоминаете в комментариях, вы также можете изменить его так, чтобы аутентификация по паролю была отключена в основной части конфигурации и использовать
Match
операторы, чтобы включить ее для нескольких пользователей:источник
Match
синтаксис выглядит хорошо, но я собираюсь попробовать его в обратном порядке. Включить логин с паролем для (несколько хромых) пользователей.Что бы вы ни делали, не оставляйте учетную запись в оставленном состоянии
passwd -u
с пустым полем пароля: это позволяет входить в систему без ввода пароля (кроме как через SSH, потому что SSH отказывается от этого).Измените учетную запись, чтобы не иметь пароля, но быть разблокированным. У учетной записи нет пароля, если хэш пароля в базе данных паролей не является хешем какой-либо строки. Традиционно для этого используется односимвольная строка, такая как
*
или!
.Заблокированные учетные записи также используют специальный маркер в поле пароля, чтобы строка не была хешем какой-либо строки. Маркер зависит от системы. В Linux
passwd
команда помечает заблокированные пароли, ставя!
в начале, а OpenSSH рассматривает учетную запись как заблокированную, если поле начинается с!
. Другие варианты Unix, как правило, используют похожие, но не идентичные механизмы, поэтому позаботьтесь о том, чтобы ваша база паролей использовалась в гетерогенной сети.В Linux вы можете отключить основанный на пароле доступ к учетной записи, одновременно разрешая доступ SSH (с помощью другого метода аутентификации, обычно пары ключей) с
Пользователь не сможет изменить учетную запись обратно на пароль, потому что это требует от него ввести действительный пароль.
Если вы хотите, вы можете вместо этого настроить SSH на отказ от аутентификации по паролю, независимо от того, есть ли у учетной записи пароль. Вам все равно нужно будет принять меры к тому, чтобы SSH не считал учетную запись заблокированной, поэтому, например, в Linux вам нужно будет удалить поле
!
из пароля (но не делайте это поле пустым - установите его так,*
как описано выше). ). Чтобы отключить аутентификацию по паролю для SSH, добавьтеPasswordAuthentication
директиву/etc/sshd_config
или/etc/ssh/sshd_config
(в зависимости от того, какая она есть в вашей системе). ИспользуйтеMatch
блок, чтобы эта директива применялась только к конкретному пользователю;Match
блоки должны появитьсяисточник
usermod -p '*' username
сработал брелок!!
префиксом) войти в систему с помощью другого метода аутентификации, еслиUsePAM yes
он установлен вsshd_config
. Это, вероятно, значение по умолчанию для большинства дистрибутивов (например, для Fedora).'*'
против»'!'
очень полезно.Вам не нужно включать или устанавливать пароли, и вы действительно не должны, если вы уже используете сильные клавиши. Просто заблокируйте свою учетную запись (sudo passwd -l username) из существующего сеанса и исправьте конфигурацию SSH.
Причина этого, вероятно, заключается в том, что вы отредактировали один из параметров демона SSH по умолчанию (в / etc / ssh / sshd_config).
Измените это в / etc / ssh / sshd_config и перезапустите SSH:
В общем, если у вас нет действительно веской причины отключить PAM, я рекомендую оставить его включенным; включение PAM в SSH позволит вам продолжать вход, даже если пароль удален. Что бы вы ни делали, не устанавливайте пустой пароль или что-то подобное ... блокировка поля пароля не означает блокировку всей учетной записи.
Подсказка при работе с SSH: оставляйте открытым другой сеанс (в другом окне) всякий раз, когда вносите изменения в конфигурацию SSH, а затем проверяйте, можете ли вы по-прежнему входить в систему; если вы случайно заблокировали свой доступ, используйте текущий сеанс, чтобы исправить это.
(Отказ от ответственности: я работаю в Userify, которая предоставляет программное обеспечение для управления ключами SSH.)
источник
У меня была эта проблема в CentOS 7. Я обычный пользователь Linux на основе Debian, поэтому я был рыбой из воды. Я заметил, что на некоторых серверах это работало, а на одном - нет. Audit.log не сказал ничего полезного, и secure.log тоже ничего не дал. Я обнаружил, что единственное реальное различие заключается в некоторых различиях контекста безопасности в файлах и каталогах между теми, которые работали, и теми, которые не работали. Получить безопасность с
sudo ls -laZ <user-home>/.ssh
каталога (я предполагаю, что по умолчанию в sshd_config много настроек).
Вы должны увидеть некоторые
ssh_home_t
иuser_home_t
атрибуты. Если вы этого не сделаете, используйтеchcon
команду, чтобы добавить недостающие атрибуты.Например
В моем случае я подозреваю, что пользователь был создан нестандартным способом. Его дом был каталогом
/var/lib
.Больше информации в: https://www.linuxquestions.org/questions/linux-security-4/selinux-preventing-ssh-login-with-~-ssh-authorized_keys-4175469538/
источник
разблокировать аккаунт и изменить пароль на случайную строку
источник