Zusamenfassend:
Möchte eine Möglichkeit zur SSH-Schlüsselauthentifizierung über LDAP.
Problem:
Wir verwenden LDAP (slapd) für Verzeichnisdienste und verwenden seit kurzem unser eigenes AMI zum Erstellen von Instanzen. Der Grund, warum das AMI-Bit wichtig ist, ist, dass wir uns im Idealfall mit SSH über die Schlüsselauthentifizierung anmelden möchten, sobald die Instanz ausgeführt wird, und nicht warten müssen, bis unser etwas langsames Konfigurationsverwaltungstool ein Skript zum Hinzufügen startet die richtigen Schlüssel zur Instanz.
Das ideale Szenario ist, dass beim Hinzufügen eines Benutzers zu LDAP auch dessen Schlüssel hinzugefügt wird und dieser sich sofort anmelden kann.
Die Schlüsselauthentifizierung ist ein Muss, da die kennwortbasierte Anmeldung weniger sicher und lästig ist.
Ich habe diese Frage gelesen , die darauf hindeutet, dass es für OpenSSH einen Patch namens OpenSSH-lpk gibt, der für OpenSSH-Server> = 6.2 nicht mehr benötigt wird
Die sshd_config (5) -Option AuthorizedKeysCommand wurde hinzugefügt, um das Abrufen von authorized_keys von einem Befehl zusätzlich zu (oder anstelle von) aus dem Dateisystem zu unterstützen. Der Befehl wird unter einem Konto ausgeführt, das von einer AuthorizedKeysCommandUser-Option sshd_config (5) angegeben wird
Wie kann ich OpenSSH und LDAP konfigurieren, um dies zu implementieren?
AuthorizedKeysCommandUser nobody
anstelle von root vorschlagen würde .ldapsearch -u -LLL -o ldif-wrap=no '(&(objectClass=posixAccount)(uid='"$1"'))' 'sshPublicKey' | sed -n 's/^[ \t]*sshPublicKey:[ \t]*\(.*\)/\1/p'
AuthorizedKeysCommandRunAs
und nichtAuthorizedKeysCommandUser
Für alle, die den Fehler beim Ausführen von ldapsearch erhalten:
wie ich es war (unter FreeBSD), besteht die Korrektur darin, den ersten sed-Befehl zu ändern:
(Hinzufügen eines Semikolons nach dem 'd').
quelle
Ich wollte nur meine "Methode" teilen, meine Client-Seite ist Debian / Ubuntu-spezifisch, aber meine Server-Seite ist im Grunde die gleiche wie oben, aber mit etwas mehr "HowTo:"
Server:
Attribut für öffentlichen Schlüssel aktivieren:
Gutschrift:
https://blog.shichao.io/2015/04/17/setup_openldap_server_with_openssh_lpk_on_ubuntu.html
Nun benutze dies, um ldif hinzuzufügen:
Hinzufügen eines Benutzers mit einem öffentlichen SSH-Schlüssel in phpLDAPadmin
Erstellen Sie zunächst einen Benutzer mit der Vorlage "Allgemein: Benutzerkonto". Wechseln Sie dann zum Attributabschnitt "objectClass", klicken Sie auf "Wert hinzufügen" und wählen Sie das Attribut "ldapPublicKey" aus. Nach dem Absenden kehren Sie zur Benutzer-Bearbeitungsseite zurück, klicken Sie auf "Neues Attribut hinzufügen" im oberen Bereich und wählen Sie "sshPublicKey", fügen Sie den öffentlichen Schlüssel in den Textbereich ein und klicken Sie schließlich auf "Objekt aktualisieren". "
sshPublicKey Attribut wird nicht angezeigt - OpenLDAP PHPLDAP SSH Key Auth
Ubuntu Client:
Testschlüssel erstellen:
quelle
Dies ist keine vollständige Antwort, sondern nur eine Ergänzung der Antwort von c4urself . Ich hätte dies als Kommentar hinzugefügt, aber ich habe keinen ausreichenden Ruf, um einen Kommentar abzugeben. Bitte stimmen Sie nicht ab!
Dies ist das Skript, das ich für das verwende
AuthorizedKeysCommand
(basierend auf der Version von c4urself). Es funktioniert unabhängig davon, ob der Wert in Base64-Codierung zurückgegeben wird oder nicht. Dies kann besonders nützlich sein, wenn Sie mehrere autorisierte Schlüssel in LDAP speichern möchten - trennen Sie die Schlüssel einfach mit Zeilenumbrüchen, ähnlich wie in der Datei authorized_keys.quelle