Я настроил ssh для использования файлов ключей, расположенных в ~/.ssh
чтобы залогиниться. Теперь я бы хотел установить двухфакторную аутентификацию при использовании пароля, но не требуется при использовании файлов ключей. Я видел, как установить двухфакторную аутентификацию здесь: DigitalOcean: как защитить SSH с помощью двухфакторной аутентификации.
Но это применимо как для входа по ключу, так и для входа по паролю, я бы хотел использовать его только для входа по паролю.
Мне бы хотелось:
или
Может, можно что-то сделать с AuthenticationMethods
в sshd_config
? Я нашел вот это: Использование OpenSSH (открытый ключ или пароль) + аутентификатор Google
AuthenticationMethods принимает несколько вариантов. Операции И используют запятую, операции ИЛИ используют пробелы. Итак, пример по приведенной выше ссылке был:
AuthenticationMethods publickey,keyboard-interactive:pam password,keyboard-interactive:pam
Это говорит о том, чтобы разрешить либо ключ и запрос-ответ, либо пароль и запрос-ответ. Это сделает то, что вы просите.
Я настоятельно рекомендую ограничить аутентификацию по ключу известными хостами, используя Match
блоки, как показано на https://blog.tinned-software.net/restrict-ssh-logins-using-ssh-keys-to-a-particular-ip-address/
Так работает по умолчанию.
По умолчанию auth
sshd не обращается к стеку PAM, когда используется аутентификация на основе ключа. Остальные стопки по-прежнему будут срабатывать (т.е. account
по-прежнему будет применять ваши политики доступа), но для этого потребуется дополнительная настройка (настройка AuthenticationMethods
), чтобы даже оказаться в ситуации, когда методы аутентификации PAM и не-PAM смешиваются.