(Мета: ИМО, этот вопрос не основывается на мнении.)
Если вы используете довольно современные версии Linux/Unix с довольно свежим OpenSSH, вы можете использовать сертификаты OpenSSH. Если вы хотите, чтобы у MFA было ощущение "билета", вы можете выдать временные сертификаты OpenSSH.
Суть сертификатов OpenSSH заключается в том, что единственной вещью, которую необходимо установить на стороне sshd, является открытый ключ SSH-CA, на который ссылается директива TrustedUserCAKeys в sshd_config.
С помощью директив AuthorizedPrincipals * вы также можете принять набор имен участников (в основном имен пользователей) в сертификатах OpenSSH для другой учетной записи локального пользователя.
Сертификаты OpenSSH не являются сертификатами X.509, они имеют другой формат, указанный в документе исходного дерева PROTOCOL.certkeys.
Вы найдете несколько веб-страниц о том, как использовать ssh-keygen для подписи открытых ключей с помощью SSH-CA (например, Использование сертификатов SSH).
Я реализовал такой небольшой SSH-CA для клиента, работающего в качестве веб-службы, для выдачи временных пользовательских сертификатов на основе многофакторной аутентификации (LDAP и OTP).
Вы найдете несколько реализаций с открытым исходным кодом в обычных местах. Я сознательно не даю здесь список, потому что после просмотра нескольких из них я реализовал свой собственный и, таким образом, не хочу одобрять конкретную реализацию. Это не означает, что эти реализации не работают. Они просто не соответствовали моим конкретным требованиям клиентов.
Предостережение:
В настоящее время он работает только с OpenSSH или libssh на стороне клиента. Шпатлевка пока не поддерживает это. Также нет поддержки сетевых устройств и других специальных устройств.
PS: Тем не менее, я бы рекомендовал использовать приличное управление пользователями на основе LDAP, которое даст вам больше, что вам нужно.