Назад | Перейти на главную страницу

Google Authenticator PAM по SSH блокирует вход root без 2FA

Ситуация:

Я активировал Google Authenticator 2FA для входа по SSH в Ubuntu 16.04, но сделал это необязательным в /etc/pam.d/sshd:

auth required pam_google_authenticator.so nullok

Я установил 2FA для учетных записей, которые могут входить в систему из Интернета, но не для учетных записей, доступ к которым ограничен из той же подсети, потому что есть запущенные cronjobs, которые должны передавать данные с сервера на сервер.

Это отлично работает для любой учетной записи, кроме корень который, конечно, ограничен только одним IP-адресом, потому что производственный и резервный серверы должны обмениваться ключами SSL.

Случай A: Когда я пытаюсь войти в систему с учетной записью обычного пользователя с ключом SSH, но без 2FA: нет проблем.

Случай B: когда я пытаюсь войти в систему с root с ключом SSH, но без 2FA, я получаю эту ошибку в /var/log/auth.log:

Aug 20 23:39:59 host01 sshd[28638]: fatal: Internal error: PAM auth succeeded when it should have failed

Ваша помощь будет очень признательна.

Это ожидаемое поведение. Предполагая, что у вас было PermitRootLogin without-password, справочная страница для PermitRootLogin говорит:

If this option is set to prohibit-password or without-password, password and keyboard-interactive authentication are disabled for root.

PAM считается интерактивным с клавиатуры. Поэтому с PermitRootLogin without-password PAM не должен позволять root входить в систему, что вы наблюдали.

Есть разница между without-password и yes для этого варианта. Вы только что это заметили. С участием yes, вы можете войти в систему с паролями или PAM, а также с without-password вы не можете войти с помощью этих методов. Вы все еще можете войти, например, с открытым ключом.

Изменение PermitRootLogin к yes решает вашу проблему, но учтите, что вся эта головная боль есть причина. Если только ты не действительно знай, что делаешь, PermitRootLogin должен быть установлен на no. Если вам нужно удаленно выполнять рутинные операции, войдите как пользователь сsudo привилегии.