Назад | Перейти на главную страницу

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

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

У вас есть несколько вариантов. В этом ответе я предполагаю, что у вас есть 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 модуль, чтобы сделать что-то подобное.

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

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

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

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

Match Group sudoers
AuthenticationMethods 'publickey'

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

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

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