
Ich habe vor Kurzem Gitolite eingerichtet, wo Benutzer mit dem Benutzer „gitolite“ über SSH auf das Git-Repository zugreifen.
Jetzt möchte ich das in LDAP integrieren. Jeder Benutzer hat einen öffentlichen Schlüssel in LDAP und wenn er die Objektklasse „git“ hat, kann er über SSH auf den Benutzer „gitolite“ zugreifen.
Ich weiß, dass es möglich ist, öffentliche Schlüssel in LDAP zu speichern. Ich bin mir aber nicht sicher, ob es möglich ist, eine auf der Objektklasse basierende Authentifizierung im „Gitosis“-Konto zuzulassen.
BEARBEITEN:Zur Verdeutlichung: Mit der objectClass git könnte sich der Benutzer „foobar“ über SSH als „gitolite“ anmelden.
Antwort1
Der Autor vonGitolithat einige Funktionen hinzugefügt, die externe Schlüsselspeicher und Informationen zur Gruppenmitgliedschaft unterstützen. Suchen Sie imÄNDERUNGSPROTOKOLLfür LDAP.
Um einen externen Schlüsselspeicher zu verwenden,sshdmuss die übliche .ssh/authorized_keys
Datei unterstützen (Dies ist die Datei, die sagtsshdlaufengl-auth-BefehlWenn einGitolitBenutzer meldet sich an).
- Deaktivieren Sie die normale Authkey-Generierung (die auf dem
keydir
imgitolite-admin
Repository basiert):
$GL_NO_SETUP_AUTHKEYS = 0;
in Ihrem.gitolite.rc
. - In regelmäßigen Abständen (jedes Mal, wenn ein Schlüssel geändert wird, ein Benutzer hinzugefügt wird usw.):
- Extrahieren Sie alle SSH-Schlüssel aus Ihrem Schlüsselspeicher in ein geeignetes temporäres Verzeichnis (verwenden Sie für die Schlüsseldateien dieselben Namen, als befänden sie sich im normalen Repository-basierten Verzeichnis
keydir
). - Laufengl-setup-authkeyshabenGitolitseinen Teil der
authorized_keys
Datei neu erstellen.
- Extrahieren Sie alle SSH-Schlüssel aus Ihrem Schlüsselspeicher in ein geeignetes temporäres Verzeichnis (verwenden Sie für die Schlüsseldateien dieselben Namen, als befänden sie sich im normalen Repository-basierten Verzeichnis
Sehendie Commit-Nachricht, die eingeführtgl-setup-authkeysfür die eigene Beschreibung des Autors.
Die Verwendung extern definierter Benutzergruppen ist etwas schwieriger, da dabei normalerweise ein weiteres Programm zwischengeschaltet werden muss.sshdUndgl-auth-Befehl(die Gruppenmitgliedschaften werden als zusätzliche Argumente angl-auth-Befehl). Sehen„Benutzergruppen und LDAP/ähnliche Tools“.
Antwort2
Wenn Sie etwas Ungewöhnliches ausprobieren möchten, können Sie .ssh/authorized_keys2 als benannte Pipe verwenden und ein Skript/Programm schreiben, das LDAP abfragt, die entsprechende Filterung durchführt und dann den Inhalt eines authorized_keys-Schlüssels ausgibt. Ich schlage authorized_keys2 vor, da Sie authorized_keys wahrscheinlich bereits verwenden.
Sie müssen beim Skript vorsichtig sein (auf blockierende Schreibvorgänge achten, wissen, wann eine neue Abfrage ausgeführt werden muss usw.), aber wenn Sie es richtig machen, erhalten Sie jedes Mal die richtige Antwort.