Двухфакторная аутентификация для входа по паролю, но не для входа с использованием файлов ключей
Я настроил 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 смешаны.