Я пытаюсь заставить 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.