(Meta: IMO Diese Frage ist nicht meinungsbasiert.)
Wenn Sie über relativ moderne Linux / Unix-Versionen mit einem relativ neuen OpenSSH verfügen, können Sie OpenSSH-Zertifikate verwenden. Wenn Sie mit "MFA" ein Gefühl von "Ticket" haben möchten, können Sie temporäre OpenSSH-Zertifikate ausstellen.
Der Punkt bei OpenSSH-Zertifikaten ist, dass das einzige, was auf sshds Seite installiert werden muss, der öffentliche Schlüssel der SSH-CA ist, auf den mit der Direktive TrustedUserCAKeys in sshd_config verwiesen wird .
Mit den Direktiven AuthorizedPrincipals * können Sie auch einen Satz von Principal-Namen (im Wesentlichen die Benutzernamen) in OpenSSH-Zertifikaten für ein anderes lokales Benutzerkonto akzeptieren.
OpenSSH-Zertifikate sind keine X.509-Zertifikate. Sie haben ein anderes Format, das im Quelltextdokument PROTOCOL.certkeys angegeben ist .
Sie finden auf mehreren Webseiten, wie Sie mit ssh-keygen öffentliche Schlüssel mit einer SSH-CA signieren (z. B. SSH-Zertifikate verwenden ).
Ich habe eine so kleine SSH-CA für einen Kunden implementiert, der als Webdienst ausgeführt wird, um temporäre Benutzerzertifikate auf Basis der Multi-Faktor-Authentifizierung (LDAP und OTP) auszustellen.
An den üblichen Stellen finden Sie mehrere Open Source-Implementierungen. Ich gebe hier absichtlich keine Liste, denn nachdem ich ein paar von ihnen durchgesehen habe, habe ich meine eigene implementiert und möchte daher keine bestimmte Implementierung unterstützen. Dies bedeutet nicht, dass diese Implementierungen nicht funktionieren. Sie haben meine spezifischen Kundenanforderungen einfach nicht erfüllt.
Vorbehalt:
Momentan funktioniert es nur mit OpenSSH oder libssh auf der Clientseite. Kitt unterstützt dies noch nicht. Es gibt auch keine Unterstützung für Netzwerkgeräte und andere spezielle Geräte.
PS: Trotzdem würde ich empfehlen, eine anständige LDAP-basierte Benutzerverwaltung zu verwenden, die Ihnen mehr Informationen gibt, die Sie benötigen.