Ich glaube, ich habe einige Verständnisprobleme mit dem, was ich erreichen möchte ...
Beginnen wir also mit dem, was derzeit funktioniert (auf allen beschriebenen Servern läuft CentOS 7):
- ein OpenLDAP-Server, der die öffentlichen Schlüssel der Benutzer enthält
- ein „Daten“-Server, auf dem ein OpenSSH-Daemon läuft, der es Benutzern ermöglicht, sich dank ihres privaten Schlüssels zu verbinden (mit dem SSH-Befehl)
Und nun mein Endziel:
- ein Gitolite-Dienst (auf dem „Daten“-Server), der die öffentlichen Schlüssel der Benutzer vom OpenLDAP-Server übernimmt
Ich fand dies in derÄnderungsprotokoll von gitolite:
(einige Contrib-Skripte – Abfragen von IPA-basierten LDAP-Servern zur Gruppenmitgliedschaft und Benutzerschlüsselverwaltung)
Ich dachte also, es könnte möglich sein, das zu erreichen, was ich möchte, aber ich weiß nicht wie …
Ich habe gelesen, dass es auch möglich ist, einen LDAP-Server abzufragen, umGruppeninformationen erhalten. Daher möchte ich glauben, dass es möglich ist, dasselbe mit öffentlichen Schlüsseln zu tun.
Ich durchsuche viele Links, kann aber nichts finden, das mein Problem löst ... Wenn jemand auch nur einen kleinen Tipp für mich hätte, wäre das großartig :)
Einen schönen Tag noch !
PS: Ich wollte nur hinzufügen, dass ich keine Angst habe, viel Code zu lesen/schreiben. Und es ist kein Problem, wenn Ihre Lösung darin besteht, etwas anderes als Gitolite zu verwenden, selbst wenn es für persönliche Zwecke besser wäre, Gitolite beizubehalten.
EDIT1:
So läuft es derzeit:
Wenn ich versuche, das Standard-Repository „testing.git“ mit diesem Befehl zu klonen:
git clone ssh://git@dataserver/testing.git
Mit den folgenden~/.ssh/config:
host dataserver
hostname dataserver
Identityfile ~/.ssh/user
User git
Mein Terminal sagt mir Folgendes:
Cloning in 'testing'...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists
Aber wenn ich einen öffentlichen Schlüssel für meinen Benutzer (user.pub) im keydir
Ordner hätte, wäre alles in Ordnung:
git clone ssh://git@dataserver/testing.git
Cloning in 'testing'...
Enter passphrase for key '/home/user/.ssh/user_rsa:
warning: it seems that you've cloned a bare repository.
Verifying connectivity... done.
Und das Git-Repository ist hier:
ls -l | grep testing
drwxrwxr-x 3 user user 4096 mars 23 11:03 testing
BEARBEITEN 2:
Ich füge lediglich hinzu, wie mein Datenserver OpenLDAP abfragt, um den öffentlichen Schlüssel der Benutzer zu erhalten (nur für den Fall).
/etc/ssh/sshd_config:
AuthorizedKeysCommand /usr/bin/ssh-keyldaps %u
AuthorizedKeysCommandUser nobody
/usr/bin/ssh-keyldaps:
ldapsearch -H ldaps://ldapserver \
-b dc=my,dc=domain \
-x -LLL \
-o ldif-wrap=no \
"(&(uid=$uid)(sshPublicKey=*))" 'sshPublicKey' |
sed -n 's/^sshPublicKey:\s*\(.*\)$/\1/p'
Ich habe einige Zeilen ausgelassen, da sie nur zu Protokollierungszwecken hier vorhanden sind.
Und dank dieser Konfiguration sshPublicKey
können sich alle im LDAP registrierten Benutzer mit ihrem privaten Schlüssel beim Datenserver anmelden.
Antwort1
AuthorizedKeysCommand
denn das sshd_config
ist wahrscheinlich das, was Sie sich ansehen möchten. Der Dokumentationsausschnitt liest sich, als ob Gitolite dafür nichts mitliefert, sondern sich eher auf externe Faktoren verlässt.
Sie können sssd so einrichten, dass es sich gegenüber dem LDAP-Server authentifiziert und dann sss_authorized_keys
beispielsweise verwendet.
Die Dokumentation sollte leicht auffindbar sein.