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

как потребовать публичный ключ и otp или пароль и otp при входе по ssh?

Я пытаюсь заставить ssh работать таким образом, чтобы пароль auth можно было пропустить с помощью ключа, и, кроме того, каждый вход в систему будет сопровождаться totp с использованием google libpam в моей новой установке debian 9.

До сих пор мне удалось заставить работать первую часть, где, если я предоставлю ключ, сервер запросит у меня otp, но так оно и есть, мне пришлось прокомментировать оба @include common-auth и @include common-password чтобы подавить запрос пароля в /etc/pam.d/sshd.

Кажется очевидным, что если я это сделаю AuthenticationMethods publickey,keyboard-interactive:pam password,keyboard-interactive:pam в моем sshd_config, и я пытаюсь войти в систему без ключа, не имеет значения, какой пароль я предоставлю, поскольку части проверки пароля закомментированы.

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

Возможно ли вообще выполнить эту конкретную комбинацию?

редактировать 1:

Продолжая возиться с этим, это действительно не так много смысла, как я первоначально думал. Если я закомментирую оба @include common-auth и @include common-password, я могу получить publickey,keyboard-interactive:pam не спрашивать пароль. Если я сейчас установлю AuthenticationMethods password для конкретного пользователя этот пользователь вообще не может войти в систему из-за отклонения каждого пароля, даже если он действительно действительный. Итак, логично, что sshd password auth также использует /etc/pam.d/sshd конфиги. если я не буду комментировать их, keyboard-interactive:pam запрашивает пароль и проверочный код, но password Метод auth по-прежнему не работает для любого пользователя, который инициализировал otp (и не будет работать для всех, кроме того, что я даю google libpam параметр nullok). Похоже на password это просто дрянная версия keyboard-interactive:pam который может запрашивать только один ввод и, таким образом, всегда терпит неудачу, если требуется более одного ввода.

Если я напишу свой собственный модуль pam.d, есть ли способ заставить ssh использовать его вместо /etc/pam.d/sshd?

редактировать 2:

Я начинаю думать, что не могу (password && otp) || (publickey && otp), потому что открытый ключ проверяется в другом месте, чем остальные, и поэтому, если я не могу определить, какую конфигурацию pam использовать с AuthenticationMethods, или я могу каким-то образом отправить параметры / аргументы в модуль pam, зная, когда проверять оба, а когда проверять только otp, кажется невозможным

Параметр, который вы ищете в sshd_config, - AuthenticationMethods. Я написал Сообщение блога о совмещении аутентификации по ключу SSH с OTP некоторое время назад.

Однако в этом сообщении в блоге OTP с модулем pam используется против системы аутентификации privacyIDEA. Но вы сможете легко обменять это с помощью Google pam.