Принудительная аутентификация открытого ключа SSH для определенных пользователей


10

Можно ли заставить определенных пользователей входить в систему с открытым ключом, одновременно позволяя другим пользователям входить в систему с паролем? Поскольку аутентификация с открытым ключом (с парольной фразой) сильнее, чем аутентификация только по паролю, мы бы хотели, чтобы sudoers входил с открытым ключом. Однако заставить обычных пользователей делать это менее удобно. В sshd_config, я не вижу никакой конфигурации, связанной с политикой.

Ответы:


11

У вас есть несколько вариантов. В этом ответе я собираюсь предположить, что вы определили sudoersгруппу.

Взгляните на sshd_configстраницу руководства и найдите Matchдирективу. Это позволяет вам указывать блоки конфигурации, которые применяются только к подмножеству ваших соединений ssh. Вы можете сделать что-то вроде этого:

Match Group sudoers
PasswordAuthentication no
ChallengeResponseAuthentication no

Теоретически вы могли бы выполнить нечто подобное с конфигурацией PAM, которая просто провалила бы попытки аутентификации людьми в sudoersгруппе. Вероятно, это будет связано с модулем pam_succeed_if ... вы можете добавить что-то вроде этого в вашу authконфигурацию для sshd:

auth        requisite     pam_succeed_if.so user notingroup sudoers quiet

Это означает, что только пользователи, не входящие в sudoersгруппу, могут выполнять аутентификацию через PAM. Обратите внимание, что это не проверено. Вы также можете использовать модуль pam_listfile, чтобы сделать что-то подобное.


1
Спасибо! Я также должен отметить, что директива Match введена в OpenSSH 5.0. Для консервативных дистрибутивов, таких как CentOS, он может быть недоступен изначально.
Кенд Кинг

Это нарушает OpenSSH 7.7p1 - мне пришлось удалить директиву ChallengeResponseAuthentication, чтобы перезапустить ее.
rbsec

2

Другой возможный ответ, как и @larsks, ответ не работает для моей версии , ssh_dкак моя версия , похоже, использует документация нашла здесь , которая гласит:

В строках после ключевого слова соответствия может использоваться только подмножество ключевых слов. Доступные ключевые слова есть. , ,

Этот список ключевых слов , не включает в себя: ChallengeResponseAuthentication.

Очень интересный способ, который я нашел, это использовать AuthenticationMethodsкоторый в вашем случае будет работать так:

Match Group sudoers
AuthenticationMethods 'publickey'

AuthenticationMethods принимает список значений, разделенных запятыми, которые представляют серию методов, которые пользователь должен пройти, прежде чем получить доступ к серверу.

AuthenticationMethods 'publickey,password' заставит пользователя пройти с открытым ключом и затем паролем.

Чтобы узнать больше man sshd_config.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.