Sie müssen einen SSH-Gatekeeper einrichten. Dadurch kann openssh die Multifaktorauthentifizierung ermöglichen.
Hier ist ein großartiger Link: https://calomel.org/openssh.html
Im Wesentlichen verwenden Sie die ForceCommand-Direktive, um ein Skript auszuführen, wenn sich der Benutzer anmeldet. Dieses Skript fordert den Benutzer dann zur Eingabe des Kennworts auf. Ich suche derzeit nach einer Methode, um ein bestimmtes Kennwort mit dem Systemkennwort zu vergleichen, aber ich werde (verständlicherweise) leer.
Wenn das Benutzerkonto in einem LDAP-Verzeichnis gespeichert ist, können Sie versuchen, mit diesen Anmeldeinformationen eine Bindung an das Verzeichnis herzustellen. Das Problem besteht jedoch darin, dass das ausgeführte Programm als Benutzer und nicht als Root ausgeführt wird. Ich kenne die Sicherheitsauswirkungen des Schreibens des kompilierten Codes und des Einstellens von SUID nicht.
Hoffentlich gibt dir jemand eine bessere Antwort.
Aber da ich so viel getippt habe, befinden Sie sich auf einer extrem sicheren Site? Denn das ist wirklich der einzige Grund dafür. Normale öffentliche Schlüssel mit Passphrasen sollten für 99% der Fälle mehr als ausreichend sein.
Neuere Versionen von OpenSSH haben dies viel einfacher gemacht!
Fügen Sie
/etc/ssh/sshd_config
einfach Folgendes hinzu:Wenn Sie einer bestimmten IP-Adresse (z. B. 192.168.10.10) erlauben möchten, sich mit den OpenSSH-Standardmethoden anzumelden, aber für jede andere IP-Adresse sowohl ein Kennwort als auch einen Schlüssel verwenden müssen, können Sie
Match
stattdessen den folgenden Block hinzufügen :Obwohl nicht gut dokumentiert, ist das führende Sternchen auf der Übereinstimmungslinie erforderlich.
Match Address "!192.168.10.10"
wird eigentlich nie zusammenpassen. Dies kann sich in zukünftigen Versionen von OpenSSH ändern .quelle
Zwei-Faktor-Authentifizierung? Nicht ganz. Das Zertifikat ist eine stärkere Authentifizierungsmethode als ein Kennwort.
Wenn Sie befürchten, dass das Zertifikat kompromittiert werden könnte, richten Sie die privaten Schlüssel so ein, dass sie durch ein Kennwort geschützt sind. Dadurch wird sichergestellt, dass der Benutzer zur Eingabe eines Kennworts aufgefordert wird, bevor das Zertifikat verwendet werden kann. Dadurch erhalten Sie eine Zwei-Faktor-Authentifizierung. Sie werden wissen, dass die Verbindung von jemandem stammt, der sowohl den privaten Schlüssel als auch das Passwort zum Entsperren besitzt.
Deaktivieren Sie die Kennwortauthentifizierung auf Ihrem SSH-Server. Dies verhindert, dass Benutzer Wörterbuch- / Brute-Force-Angriffe verwenden.
quelle