Мне нужно, чтобы пользователи входили в систему CentOS с разными методами аутентификации. Некоторые используют пароль, а другие - открытый ключ.
Я следовал методам, упомянутым здесь: Как я могу настроить методы аутентификации OpenSSH для каждого пользователя?
Однако мне не удалось получить успешный вход на основе пароля.
В файле sshd_config у меня есть:
AuthenticationMethods keyboard-interactive,publickey
PasswordAuthentication no
Match User newton
PasswordAuthentication yes
Match all
Обновление: я вижу, что проблема возникает только тогда, когда у меня включена 2FA с аутентификацией Google, и у меня есть строка:
AuthenticationMethods keyboard-interactive,publickey
Хотя для пользователя newton я установил аутентификацию по паролю, я вижу следующую ошибку:
[root@localhost]# ssh newton@50.39.213.152
Permission denied (publickey).
Любые предложения приветствуются.
Хотя ответ @Tolsadus, вероятно, указывает на правильное решение, он не дает четкого ответа на вопрос.
Короче говоря, справочная страница для ssh_config
это хорошее начало для понимания того, как работает парсер конфигурации в ssh (те же правила применяются для sshd_config
):
Для каждого параметра будет использоваться первое полученное значение.
Это означает, что ваш пример установит PasswordAuthentication
к no
для всех пользователей и для newton
пользователь не будет перезаписывать его (поскольку он уже установлен). Чтобы обойти это, вы должны установить значения по умолчанию в Match
блок. Это окажет ожидаемое влияние на newton
пользователь:
Match User newton
PasswordAuthentication yes
Match all
PasswordAuthentication no
Идеальное объяснение как использовать опцию соответствия в /etc/ssh/sshd_config
В вашем случае вам должен понравиться этот пример "реального" мира https://gist.github.com/kjellski/5940875
Вы можете найти это совпадение по адресам, а также по пользователям, которые комментируются.
ИЗМЕНИТЬ / ОБНОВИТЬ
@Jakuje правильно ответил на вопрос, намного точнее, чем мой.