
Also habe ichGitoliteingerichtet. Einfach. Aber ich habe ein Problem. Die SSH-URLs folgen dem Format git@host:repo
. Ich bin es gewohntBit Bucket/Githubwobei die URLs das Format von haben git@host:user/repo
. Gibt es eine Möglichkeit, das letztere Format zu erhalten, indem manGitolit?
Noch eine Frage. Ich habe meine ~/.ssh/config
Datei mit folgendem Eintrag eingerichtet:
Host <host>
User <user>
IdentityFile <path/to/public/key>
Ich habe keine Konfiguration, die git
mich als Benutzer angibt, und dennoch kann ich git@host:repo
problemlos klonen. Offensichtlich verwendet mein SSH-Client meinen öffentlichen Schlüssel, um auf den Server zuzugreifen, weshalbGitolitlässt mich das Repo klonen, aber woher weiß mein SSH-Client, dass er meinen öffentlichen Schlüssel verwenden soll, der nur für den <user>
Benutzer und nicht für den git
Benutzer selbst konfiguriert ist?
Antwort1
SehenGitolite und SSH
Die Beschränkung der Benutzer auf bestimmte Befehle ist für Gitolite sehr wichtig.
Wenn Sie lesenman sshd
und suchen Sie nach dem Dateiformat authorized_keys. Sie werden viele Optionen sehen, die Sie der öffentlichen Schlüsselzeile hinzufügen können, um den eingehenden Benutzer auf verschiedene Weise einzuschränken. Beachten Sie insbesondere diecommand=
Option, die bedeutet: „Unabhängig davon, was der eingehende Benutzer tun möchte, führen Sie stattdessen zwangsweise diesen Befehl aus.“Beachten Sie auch, dass, wenn die Datei authorized_keys viele öffentliche Schlüssel (also Zeilen) enthält, jede Zeile einen anderen Satz an Optionen und
command=
Werten aufweisen kann.Ohne diese
command=
Option gibt Ihnen der SSH-Daemon einfach eine Shell, was wir für unsere Gitolite-Schlüssel nicht wollen (obwohl wir durchaus andere Schlüssel haben könnten, die wir zum Abrufen einer Shell verwenden).Dies ist das Rückgrat dessen, was Gitolite funktionieren lässt. Bitte stellen Sie sicher, dass Sie dies verstehen..
Diese command=
verwenden den Namen Ihres öffentlichen Schlüssels als Benutzernamen.
Alle Ihre SSH-Abfragen werden also mit folgendem Befehl durchgeführt:
- der Benutzer git
- ein öffentlicher Schlüssel, dessen Name in den Parametern der Direktive „command=“ in der registriert ist
~git/.ssh/authorized_keys
.
Was das betrifft user/repos
, das nächste, was Sie mit Gitolite erreichen würden, ist inWilde Repos und Repo-Muster.
repo CREATOR/a[0-9][0-9]