Gitolite3-SSH-Informationen schlagen fehl

1076
Florian Mertens

Ich habe gitolite3 aus dem EPEL-Repository in Centos6.4 installiert. Es gab eine Reihe von Dingen, die ich nicht mochte, also machte ich mich daran, sie zu ändern. Zuerst habe ich einen zusätzlichen Benutzer und eine Gruppe namens "git" erstellt, um den Abstand zum obscure gitolite3-Benutzer festzulegen. Zweitens habe ich einen benutzerdefinierten Ordner / Server / Projects anstelle von / var / lib / gitolite3 verwendet. Ich stellte sicher, dass Besitz und Berechtigungen identisch waren.

Das Setup war auch ohne Probleme (su - git, dann gitolite3 - Setup mit Admin - Client - Schlüssel).

Normalerweise ssh git@myserver infogeneriert der Befehl auf einem Client-Computer einen einfachen gitolite-Return, der die Repos und Berechtigungen auflistet. Aber jetzt gibt es eine Anfrage für ein Passwort. Offensichtlich ist Gitolite nicht mehr über diesen Benutzer mit dem SSH-Port verbunden, sondern die übliche Bash.

Ich bin kein Experte für SSH, also ist etwas schief gelaufen oder ich habe vergessen, etwas zu tun. Wohin soll ich schauen? Ich denke, dass / usr / share / gitolite3 / gitolite3-shell die App ist, die SSHD aufrufen sollte, wenn eine SSH-Anfrage mit dem git-Benutzer eingeht.

1
Wie lauten die Berechtigungen für das .ssh-Verzeichnis und die .ssh / authorised_keys-Datei für den git-Benutzer? Was sagt "ssh -vvv git @ myserver info"? Was sagt das SSH-Protokoll auf dem Server? Etan Reisner vor 11 Jahren 1
Danke fürs Helfen! Muss der lokale Benutzer, der diesen ssh-Befehl ausführt, in der Berechtigungsliste git @ server ssh bekannt sein? Der -vvv liefert eine Menge Informationen. Möchten Sie alles sehen? Wo befindet sich das ssh-Protokoll und fragen Sie nach dem lokalen ssh-Protokoll oder dem Server-sshd-Protokoll? Florian Mertens vor 11 Jahren 0
Das Serverprotokoll Ja, alle Ausgaben. Der Schlüssel, den der lokale Benutzer verwendet, muss sich in der Liste der Authorized_keys des Benutzers git @ server befinden, oder der Schlüssel des lokalen Benutzers authentifiziert den Benutzer nicht für das git-Konto (Sie sollten jedoch nichts unternehmen, da gitolite die Authorized_keys für Sie verwaltet ). Etan Reisner vor 11 Jahren 1

1 Antwort auf die Frage

0
Florian Mertens

SSH ist nicht einfach. Ich habe es selbst gelöst, aber es war nicht offensichtlich. Es war meistens ein SELinux-Problem, aber ich stellte fest, dass ich den Pubkey auch nicht richtig eingerichtet hatte.

Zuerst habe ich den pubkey (admin.pub) für den lokalen Computer (der), der den gitolite-Server verwalten sollte, (neu) erstellt, ihn in den git-Benutzer-Home-Ordner kopiert und den gitolite (unter dem git-Benutzer in seinem Home-Ordner) erneut ausgeführt mit diesem pubkey einrichten. Ein Hinweis hier ist, dass mein lokaler Computer Windows mit msys-git hat, was das Problem nicht einfach macht.

# su - git $ cd /Server/Projects $ gitolite setup --pubkey admin.pub 

..Das das Problem mit dem Pubkey gelöst hat. Selinux war eine größere Lernkurve, aber im Wesentlichen verlieren Sie alle ursprünglichen Kontextlabels des / var / lib / gitolite3-Ordners, wenn Sie nur kopieren. Um die Beschriftungen (mit Semanage) wiederherzustellen, referenzieren Sie dieselben Beschriftungen (mit der Markierung -e) wie im ursprünglichen Ordner, auf den Sie den aktuellen Gitolite-Ordner gesetzt haben. Da dies nur zu den vorhandenen Selinux-Dateikontexten beiträgt, müssen Sie diese auch aus den Selinux-Dateikontexten wiederherstellen. Der letzte Punkt ist die Verwendung absoluter Pfade, nicht relativer Pfade. Sie können sehen, was Sie mit dem Befehl ll getan haben:

# semanage fcontext -a -e /var/lib/gitolite3 /Server/Projects # restorecon -R /Server/Projects # ll -aZ 

Versuchen Sie jetzt auf Ihrem lokalen Computer alles mit dem folgenden Befehl von dem Computer aus, von dem der Pubkey stammt. Das hat für mich funktioniert. Beachten Sie, dass ich nicht wusste, dass ssh git@unclefloserver infonur eine nette Ausgabe von gitolite3-Repo-Informationen zurückgegeben wird, wenn der Server tatsächlich den Pubkey der anfragenden Benutzer / Computer-Kombination hat. Ich habe dieses Konzept auch ein bisschen nicht verstanden und habe es von einem anderen Computer aus getestet.

> git clone git@server:gitolite-admin 

Vielen Dank an @Etan Reisner für den Druck.