Was ist der richtige Weg, um git mit gnome-keyring und http (s) repos zu verwenden?


43

Derzeit , wenn ich git pulloder git pushzu einem http (s) Repository, erhalte ich die folgenden:

$ git pull
Username for 'https://gitrepos.reposdomain.com': me@mydomain.com
Password for 'https://me@mydomain.com@gitrepos.reposdomain.com': 

Dies ist in Ordnung für den seltenen Gebrauch, wird aber sehr schnell sehr ärgerlich. Leider ist ein Wechsel zu ssh in diesem Fall nicht möglich.

Ich habe gelesen, dass frühere Versionen giteinen Berechtigungsnachweis "store" und "cache" lieferten, dies wurde jedoch nicht empfohlen, da das Kennwort im Klartext gespeichert wurde.

ABER

Neuere Versionen von gitspeichern anscheinend Git-Anmeldeinformationen in der gnome-keyring, aber es muss korrekt eingerichtet sein.

Ich habe versucht, anderen (nicht von Ubuntu stammenden) Antworten auf SO zu folgen, um dies zum Laufen zu bringen (nämlich dieser ), aber mir werden immer noch der Benutzername und das Kennwort angezeigt.

Was ist der richtige und sicherste Weg, um gitAnmeldeinformationen für http (s) -Repos zu speichern und wie bringt man sie auf Ubuntu zum Laufen?


Sie sollten angeben, welche Methoden Sie ausprobiert haben. Andernfalls könnten Sie Antworten finden, die genau diese vorschlagen.
muru

@muru Warum haben Sie die Hervorhebung, die ich zur besseren Lesbarkeit hinzugefügt habe, entfernt? Jetzt ist es nur ein Klumpen Text und die Gründe, die die Frage von anderen unterscheiden und die eigentliche Frage ist weniger offensichtlich.
Wiedereinsetzen Monica-dor duh

Ein ganzer fett und kursiv geschriebener Satz ist kaum lesbar.
muru

1
@muru ich bitte um differenz. Ich finde, dass fett und kursiv gedruckter Text die wesentlichen Teile der Frage hervorhebt.
Wiedereinsetzung von Monica-dor duh

Antworten:


45

gnome-credential-helper ist jetzt veraltet.

Verwenden Sie stattdessen libsecret. Wenn Ihr Ubuntu noch nicht integriert ist, gehen Sie wie folgt vor:

  1. Sie können libsecretdie Entwicklungsbibliotheken installieren und verwenden mit:

    sudo apt-get install libsecret-1-0 libsecret-1-dev

  2. Dann müssen Sie den Anmeldeinformations-Manager erstellen

    cd /usr/share/doc/git/contrib/credential/libsecret

    sudo make

  3. Zuletzt solltest du git auf die neu erstellte Datei in deiner Konfiguration verweisen :

    git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

Weitere Informationen finden Sie unter https://stackoverflow.com/a/40312117/2017781


1
Vielleicht möchten Sie beachten, dass diese Lösung nur für Git-Versionen> = 2.11 gilt (wo das libsecret-Verzeichnis dann gefunden werden kann)
Charles Roberto Canato

1
Ist das sicher? Wo sind die Geheimnisse gespeichert? Ist sowohl die Übertragung als auch die Lagerung sicher? Gibt es offizielle Unterlagen? Wie auf dieser Seite und auf dieser Seite angegeben , ist es anscheinend in "Main" und wird von Debian / Ubuntu gepflegt. Und: "Es kommuniziert mit dem 'Secret Service' über DBus."
caw

1
@caw: In GNOME ist "Secret Service" derselbe Gnome-Keyring-Daemon, nur über eine andere API. (Der libsecret-Plan sah vor, dass andere DEs ihre eigenen Backends erstellen können, die dieselbe API unterstützen, z. B. wollte KDE dies in kwalletd implementieren.)
grawity

5
Aktualisieren meiner bevorzugten Antwort, da ich überprüfen kann, ob dies am 18.04. Funktioniert. :)
tu-Reinstate Monica-dor duh

44

Sie müssen den Git credential helpermit Gnome Keyring einrichten:

Installieren und kompilieren Sie den Gnome Keyring-Entwickler:

sudo apt-get install libgnome-keyring-dev
sudo make --directory=/usr/share/doc/git/contrib/credential/gnome-keyring

Und richten Sie den Berechtigungsnachweis ein:

git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring

Das ist wirklich komisch. Semantisch sollte es keinen Unterschied zwischen der Antwort im Link und dieser Antwort geben. Aber aus irgendeinem Grund funktioniert diese Antwort dort, wo die andere nicht funktioniert.
Wiedereinsetzung von Monica-dor duh

Führen Sie dann git pushoder git pullwie gewohnt aus, und das erste Mal fragt es ansd store. Danach wird es jedes Mal vom Schlüsselbund abgerufen. Um dies zu überprüfen, führen Sie aus seahorse. Es sollte unter "Passwörter" -> "Login" aufgeführt sein.
Wiedereinsetzung von Monica-dor duh

@tudor Das ist seltsam, ich sehe keinen "konzeptuellen" Unterschied zwischen meiner Antwort und der des Links. Schön, dass es hilft.

Mir kommt es komisch vor, dass Sie immer noch den Befehl "make" ausführen müssen, aber diese Schritte funktionieren hervorragend. Vielen Dank!
DaveTheScientist

2

Dieser einfache Ansatz scheint auf meinem Ubuntu 18.04.1 mit Git 2.17.1 ausreichend zu sein:

git config --global credential.helper cache

Sie können ein Timeout von einer Stunde (= 3600 Sekunden) wie folgt festlegen:

git config --global credential.helper 'cache --timeout=3600'

Lesen Sie weiter im Handbuch .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.