Я установил и настроил PAM на моем сервере Ubuntu, который работает правильно. Чтобы войти в систему, я хочу, чтобы был установлен ключ SSH, предоставлен пароль и действительный код из приложения для аутентификации.
Проблема в том, что я хотел бы добавить исключения из этих требований для каждого пользователя.
Например, я хочу применить все эти методы аутентификации для моей учетной записи пользователя, но указать другого пользователя (git - для моей установки GitLab), который будет доступен только с помощью ключа SSH (пароль или код 2FA не требуется), чтобы поведение push и pull работает.
На данный момент я нашел единственный способ обойти это - установить auth required pam_google_authenticator.so nullok
в файле /etc/pam.d/sshd, поэтому часть 2FA является необязательной, а также комментирует @include common-auth
линия. Однако это означает, что, хотя часть 2FA работает, меня больше не просят ввести пароль для моей основной учетной записи.
Я пытался сделать следующее:
auth [success=1 default=ignore] pam_succeed_if.so user in git
@include common-auth
но это, похоже, не работает.
Что мне нужно сделать, чтобы по умолчанию включить все вышеперечисленные методы аутентификации, но добавить исключения для определенных учетных записей пользователей, например git
и т.д?
Давайте немного разберем эти требования.
Настройка SSH
Во-первых, чтобы потребовать открытые ключи и пароль для предоставления, вам необходимо изменить свой /etc/ssh/sshd_config
добавив эту строку:
AuthenticationMethods publickey,keyboard-interactive
Таким образом, у каждого должен быть открытый ключ, и у каждого должна быть возможность указать свой пароль при входе в систему.
Чтобы сделать исключения, используйте Match
блок. Например, предположим, что пользователи, для которых нет ограничений, находятся в come-as-please
группа. Затем добавьте эти строки в конец sshd_config
файл:
Match Group come-as-please
AuthenticationMethods publickey keyboard-interactive
Обратите внимание на отсутствие запятой, что означает, что члены группы могут использовать любой открытый ключ, или клавиатура-интерактивная (парольная) аутентификация.
Настройка гугл-аутентификатора
Чтобы использовать модуль аутентификации Google, вы должны изменить /etc/pam.d/sshd
файл. После
@include common-auth
строку, добавьте эту:
auth required pam_google_authenticator.so nullok
Кроме того, чтобы включить двухфакторную аутентификацию, вам необходимо изменить свой /etc/ssh/sshd_config
файл, добавив эту строку:
ChallengeResponseAuthentication yes
После этого перезапустите демон SSH.
Настройка доступа пользователей
После внесенных выше изменений у вас появятся следующие настройки доступа:
.google_authenticator
файл в домашнем каталоге пользователя, то они должен также укажите соответствующий код аутентификатора.come-as-please
группа: .google_authenticator
файл в их доме или нет,.google_authenticator
файл существует в их домашнем каталоге.