Lassen Sie Gitolite SSH-Schlüssel aus LDAP abrufen

Lassen Sie Gitolite SSH-Schlüssel aus LDAP abrufen

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 keydirOrdner 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 sshPublicKeykönnen sich alle im LDAP registrierten Benutzer mit ihrem privaten Schlüssel beim Datenserver anmelden.

Antwort1

AuthorizedKeysCommanddenn das sshd_configist 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_keysbeispielsweise verwendet.

Die Dokumentation sollte leicht auffindbar sein.

verwandte Informationen