Примусити автентифікацію відкритого ключа SSH для конкретних користувачів


10

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

3

Інша можлива відповідь, як і @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.