Verwendung von Git mit Gnome-Keyring-Integration

129

Git 1.8.0 unterstützt die Integration mit Gnome-Keyring.

http://www.h-online.com/open/news/item/Git-1-8-0-can-access-Windows-and-GNOME-keyrings-1733879.html

Nachdem Sie die Dokumente zu den Hilfsprogrammen für Git-Anmeldeinformationen gelesen haben: http://git-scm.com/docs/gitcredentials.html

Ich konnte keine Möglichkeit finden, diese neue Funktion zu verwenden. Wie kann ich es integrieren? Ich verwende Archlinux mit Git, das aus dem Archlinux-Repository installiert wurde. (git 1.8.0)

marcosdsanchez
quelle

Antworten:

193

@ marcosdsanchez 'Antwort ist für Arch (der die ursprüngliche Frage beantwortet), aber ich bin auf Ubuntu. Für git> = 2.11:

sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

Für Git <2.11:

sudo apt-get install libgnome-keyring-dev
cd /usr/share/doc/git/contrib/credential/gnome-keyring
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring
James Ward
quelle
9
Ich habe zunächst gezögert, dies zu tun, aber ich habe es endlich getan und es funktioniert perfekt. Wie in den Dokumenten für gitcredentials angegeben , möchten Sie möglicherweise auch prüfen , git help -a | grep credential-ob andere Helfer installiert sind. Standardmäßig werden credential-cacheFolgendes verwendet: credential-store(Speichern Sie das Kennwort einige Zeit nach der Eingabe, standardmäßig 15 Minuten) und (Speichern Sie das Kennwort standardmäßig im Klartext in einer unverschlüsselten Datei auf der Festplatte ~/.git-credentials).
ShreevatsaR
51
Könnte jemand erklären, warum dies manuell kompiliert werden muss und standardmäßig nicht über ein Paket verfügbar ist?
Lanoxx
4
Arbeitete in Ubuntu 14.04 LTS!
Eugene Kulabuhov
4
musste nur tun chmod 0755 git-credential-gnome-keyring, um anderen als root die Ausführungsberechtigung hinzuzufügen
Lari Hotari
8
Noch gültig für Ubuntu 16.04 LTS
Eugene Kulabuhov
54

Git 1.8.0 wird mit Gnome-Schlüsselbund unterstützt, die Binärdatei muss jedoch für Ihre Plattform kompiliert werden.

Dies hat es für mich in Archlinux gelöst:

$ sudo pacman -S libgnome-keyring
$ cd /usr/share/git/credential/gnome-keyring
$ make
$ git config --global credential.helper /usr/share/git/credential/gnome-keyring/git-credential-gnome-keyring

Die @ VonC-Lösung war geschlossen, aber der Befehl git config sollte auf die ausführbare Datei verweisen. Deshalb hat es bei mir nicht funktioniert.

marcosdsanchez
quelle
Ich habe meine Antwort neu formatiert, um Ihre Schlussfolgerung widerzuspiegeln. Ich habe es gebaut (es wurde nicht standardmäßig in meiner Git 1.8 Distribution erstellt) und es heute Morgen getestet. Es funktioniert.
VonC
1
Wenn Sie bekommen Package gnome-keyring-1 was not found in the pkg-config search path., fehlen Ihnen die Entwicklungsbibliotheken für Gnome-Schlüsselbund. Unter Ubuntu sind diese mit verfügbar apt-get install libgnome-keyring-dev. Außerdem musste ich das Git Contrib Repo manuell von github.com/git/git/tree/master/contrib herunterladen und in / usr / share / git-core / ablegen. Diese Dateien sind nicht mehr in einer Standard-Git-Installation enthalten, zumindest nicht mit dem offiziellen Git-Core-Ubuntu-ppa.
Johann
1
Dies erklärt ziemlich gut, warum das aur-Paket git-credential-gnomekeyringweg ist, schade, dass es in AUR keine solchen Informationen gibt.
Ryenus
Auf Ubuntu habe ich keinen Git-Ordner in /usr/share/... nur Gitweb und Git-Core. Aber ich bin auf Git 1.7.9. Könnte das der Grund sein ...?
temporärer_Benutzername
1
Ab 2017 auf Arch ist eine einfache Installation libgnome-keyringausreichend (zumindest wenn Sie Gnome verwenden).
ald.li
25

Update Q4 2016:

  • Unix, Mac (Git 2.11+)

    git config --global credential.helper libsecret
    

(Siehe " Fehler bei Verwendung des Git-Anmeldeinformations-Helfers mitgnome-keyring ")

  • Windows:

    git config --global credential.helper manager
    

(Siehe " Abmelden in der Git Bash-Konsole unter Windows? ": Dies ist Git für Windows mit dem neuesten Microsoft Git Credential Manager für Windows. )


Ursprüngliche Antwort (2012)

Anmeldeinformations-Helfer für Windows-, Mac- und Unix-Plattformen wurden zuerst im Repo "git-credential-helper" eingeführt , das jetzt in der Git-Distribution enthalten ist :

Dieses Repository enthält eine Reihe von Git-Anmeldeinformations-Helfern ( gitcredentials(7)), die Teil von sind git(oder in Zukunft bereitgestellt werden sollen).

$ git clone git://github.com/pah/git-credential-helper.git
$ BACKEND=gnome-keyring      # or any other backend
$ cd git-credential-helper/$BACKEND
$ make
$ cp git-credential-$BACKEND /path/to/git/crendential

Beim Erstellen wird es im /path/to/git/credentialVerzeichnis installiert .

Um dieses Backend zu verwenden, können Sie es durch Festlegen zu Ihrer (globalen) Git-Konfiguration hinzufügen

(hier für Unix):

git config --global credential.helper /path/to/git/credential/gnome-keyring/git-credential-gnome-keyring

Hinweis für Windows:

Ich nehme an, Sie könnten ein Programm erstellen, das unter Windows ausgeführt wird und eine Bibliothek wie " pypi keyring 0.10 " aufruft .
Aber das ist das Back-End, und Sie verwenden es nicht direkt von Git aus.

Was Sie verwenden, ist ein "Helfer für Anmeldeinformationen" (der wiederum jede gewünschte Anmeldeinformations-API unter Windows aufruft ).

GitHub für Windows bietet einen solchen Helfer (als ausführbare Datei namens ... github) und kann Ihre Anmeldeinformationen für die Dauer der Windows-Sitzung speichern.
Starten Sie eine Shell aus diesem "GitHub für Windows" -Fenster und geben Sie "git config --system -l" ein:

C:\Users\VonC\Documents\GitHub\test [master +2 ~0 -0 !]> git config --system -l
credential.helper=!github --credentials

Der credential.helper=!github --credentialsTeil ruft den Helfer für Anmeldeinformationen auf github.

$ git config [--global] credential.helper $BACKEND
VonC
quelle
Nicht das, wonach ich suche. Die Antwort sollte nur * nix sein.
Marcosdsanchez
@marcosdsanchez ok, ich habe meine Antwort so bearbeitet, dass sie ein Setup und die Verwendung von Gnome-Schlüsselringen unter Unix mit Git enthält.
VonC
Ich möchte die Funktion 1.8.0 von git verwenden, die bereits vorhanden ist. Kein Code von Drittanbietern. Vielen Dank.
Marcosdsanchez
@marcosdsanchez dann müssen Sie github.com/git/git/tree/master/contrib/credential/gnome-keyring (das mit git verpackt ist) kompilieren . Einmal kompiliert, würden Sie es installieren und verwenden, wie in meiner Antwort dargestellt.
VonC
Ich denke, es ist keine Binärdatei eingebaut?
Marcosdsanchez
15

Update Oktober 2018

GNOME hat den libgnome-Schlüsselring veraltet und durch libsecret ersetzt. Commit https://github.com/git/git/commit/87d1353a6a hat einen neuen Helfer für Anmeldeinformationen hinzugefügt / usr / libexec / git-core / git-credential-libsecret.

git config --global credential.helper libsecret

vk5tu
quelle
2
Wahrscheinlich sollte dies hier ein Kommentar zu einer Antwort sein, die auf einem Gnomschlüsselring basiert.
Murmel
Stimmen Sie zu, gnome-keyringbasierende Antworten sollten entsprechend bearbeitet werden. Vielleicht einfach die ganze Option ausschließen. Das hat bei Ubuntu 19.10 bei mir überhaupt nicht funktioniert.
Mario
11

Für jeden auf Fedora habe ich die Antwort von James Ward leicht bearbeitet:

sudo yum install libgnome-keyring-devel
cd /usr/share/doc/git/contrib/credential/gnome-keyring
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring
SuperGreg
quelle
2
Ich bin verwirrt, ist das nicht schon in den Git-Paketen enthalten? Was ist diese Datei dann innerhalb des fc19-Pakets, git-1.8.3.1-1.fc19.x86_64. Hier ist diese Datei : /usr/libexec/git-core/git-credential-gnome-keyring.
Slm
10
In Fedora 21, Git 2.1.0, können Sie einfach git config --global credential.helper gnome-keyring
Folgendes
7

Fügen Sie einfach diese beiden Zeilen zu Ihrer ~/.gitconfigDatei hinzu:

[credential]
    helper = gnome-keyring

Wenn Sie das nächste Mal von Git nach einem Passwort gefragt werden, wird das eingegebene Passwort im Gnome-Schlüsselring gespeichert (Sie können dies mit dem seahorseTool sehen) und Sie werden danach nicht mehr nach dem Passwort gefragt.

Dies setzt voraus, dass Ihre Git-Version ausreichend neu ist (wie 2.1.0) und Sie unter Linux Fedora, RHEL oder CentOS arbeiten. Für ältere Versionen oder andere Betriebssysteme / Distributionen lesen Sie die anderen Antworten.

oliver
quelle
6
In Ubuntu 16.04:git: 'credential-gnome-keyring' is not a git command.
Ferit
@ Saibot: Hoppla, du hast recht. Fedora / RHEL bieten dies anscheinend an, Ubuntu jedoch nicht. In diesem Fall ist die Antwort von James Ward ( stackoverflow.com/a/14528360/2148773 ) besser.
Oliver
2

Einige Distributionen werden mit dieser Integration als Installationspaket geliefert, ohne dass eine Kompilierung erforderlich ist. Abhängig von Ihrer Version von GNOME müssen Sie entweder gnome-keyringoder libsecretVersionen des Pakets installieren , etwa git-credential-gnome-keyring(OpenSUSE Leap 42.3).

Dies allein ermöglicht jedoch nicht automatisch die automatische Integration von Git in den GNOME-Schlüsselring. Sie müssen Git weiterhin so konfigurieren, dass diese Methode zum Speichern von Anmeldeinformationen verwendet wird:

git config --global credential.helper gnome-keyring # If you installed git-credential-gnome-keyring
git config --global credential.helper libsecret     # If you installed git-credential-libsecret
palswim
quelle
Unter Ubuntu 19.10 gnome-keyringfunktioniert die Option für mich nicht mehr, aber James Wards Anweisung libsecretfunktioniert immer noch gut. Ich war jedoch verwirrt über die gnome-keyringhier gegebene Empfehlung : github.com/timhughes/git-credential-libsecret
Mario
libsecret(oder was find /usr -iname git-credential-libsecretgibt) ist die richtige Option in Gentoo Linux. Beachten Sie, dass mit erstellt werden dev-vcs/gitmuss USE=gnome-keyring.
Sphakka
1

Auf Fedora müssen Sie installieren

$ sudo dnf install git-credential-libsecret

und bearbeiten Sie Ihre Git-Konfiguration , um den Helfer für Anmeldeinformationen zu verwenden.

[credential]
    helper = /usr/libexec/git-core/git-credential-libsecret

Zu Ihrer Information, das libsecretPaket wurde kürzlich aufgeteilt, siehe Beitrag von @rugk . Aus diesem Grund müssen Benutzer dieses Paket neu installieren.

Kinafu
quelle