Двухфакторная аутентификация для входа по паролю, но не для входа с использованием файлов ключей

Я настроил SSH для использования ключей файлов, расположенных в ~/.ssh чтобы залогиниться. Теперь я хотел бы установить двухфакторную аутентификацию при использовании пароля, но не обязательно при использовании файлов ключей. Я видел, как установить двухфакторную аутентификацию здесь: DigitalOcean: как защитить SSH с помощью двухфакторной аутентификации.

Но это относится как к логину ключей, так и к паролю, я хотел бы использовать его только для парольного входа.

Мне бы хотелось:

  • открытый ключ -> нормально для входа на сервер

или же

  • пароль -> одноразовый пароль -> нормально войти на сервер

Может быть, что-то можно сделать с AuthenticationMethods в sshd_config? Я нашел это: использование OpenSSH (открытый ключ или пароль) + google authenticator

2 ответа

AuthenticationMethods принимает несколько вариантов. Операции AND используют запятую, а операции OR используют пробелы. Итак, пример по ссылке, которую вы имели выше, был:

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 смешаны.

Другие вопросы по тегам