(Meta: IMO esta questão não é baseada em opinião.)
Se você está em versões bastante modernas de Linux / Unix com um OpenSSH relativamente recente, pode usar certificados OpenSSH. Se você quiser um tipo de "ticket" com o MFA, pode emitir certificados temporários do OpenSSH.
O ponto com os certificados OpenSSH é que a única coisa que precisa ser instalada no lado do sshd é a chave pública do SSH-CA referenciada com a diretiva TrustedUserCAKeys em sshd_config .
Com as diretivas AuthorizedPrincipals * você também pode aceitar um conjunto de nomes principais (basicamente os nomes de usuário) em Certificados OpenSSH para outra conta de usuário local.
Certificados OpenSSH não são certificados X.509, eles têm um formato diferente especificado no documento da árvore de origem PROTOCOL.Certkeys .
Você encontrará várias páginas da web como usar ssh-keygen para assinar chaves públicas com um SSH-CA (por exemplo, Usando certificados SSH ).
Eu implementei um SSH-CA tão pequeno para um cliente executando como um serviço da Web para emitir certificados de usuário temporários com base na autenticação de vários fatores (LDAP e OTP).
Você encontrará várias implementações de código aberto nos locais habituais. Eu deliberadamente não dou uma lista aqui, porque depois de analisar alguns deles eu implementei o meu próprio e, portanto, não quero endossar uma implementação específica. Isso não significa que essas implementações não funcionem. Eles simplesmente não atenderam às minhas necessidades específicas de clientes.
Advertência:
Atualmente, ele só funciona com OpenSSH ou libssh no lado do cliente. putty não suporta isto ainda. Também não há suporte em dispositivos de rede e outros aparelhos especiais.
P.S .: Ainda assim, eu recomendo usar um gerenciador de usuários decente baseado em LDAP, que lhe dará mais do que você precisa.