Можно ли заставить определенных пользователей входить в систему с открытым ключом, а другим пользователям разрешать вход с паролем? Поскольку аутентификация с открытым ключом (с парольной фразой) более надежна, чем аутентификация только по паролю, мы хотели бы потребовать от 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
.