Jak używać git z integracją gnome-keyring

132

Git 1.8.0 obsługuje integrację z gnome-keyring.

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

Po przeczytaniu dokumentacji dotyczącej pomocników poświadczeń git: http://git-scm.com/docs/gitcredentials.html

Nie udało mi się znaleźć sposobu na użycie tej nowej funkcji. Jak mogę to zintegrować? Używam Archlinux z zainstalowanym gitem z repozytorium Archlinux. (git 1.8.0)

marcosdsanchez
źródło

Odpowiedzi:

199

Odpowiedź @ marcosdsanchez dotyczy Arch (która odpowiada na oryginalne pytanie), ale jestem na Ubuntu. Dla 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

Dla 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
źródło
10
Na początku wahałem się, czy to zrobić, ale w końcu to zrobiłem i działa idealnie. Jak mówią dokumenty dotyczące gitcredentials , możesz również chcieć to zrobić git help -a | grep credential-i sprawdzić, czy masz zainstalowanych innych pomocników. Te, które są dostępne domyślnie, to credential-cache(zapamiętaj hasło przez jakiś czas po jego wprowadzeniu, domyślnie 15 minut) i credential-store( domyślnie przechowuj hasło w postaci zwykłego tekstu w niezaszyfrowanym pliku na dysku ~/.git-credentials).
ShreevatsaR
53
Czy ktoś mógłby wyjaśnić, dlaczego to musi być skompilowane ręcznie i nie jest dostępne domyślnie w pakiecie?
lanoxx,
4
Pracował w Ubuntu 14.04 LTS!
Eugene Kulabuhov,
4
po prostu musiałem zrobić, chmod 0755 git-credential-gnome-keyringaby dodać uprawnienia do wykonywania innym niż root
Lari Hotari
8
Nadal ważne dla Ubuntu 16.04 LTS
Eugene Kulabuhov
54

Git 1.8.0 zapewnia obsługę kluczy gnome, ale plik binarny musi zostać skompilowany dla Twojej platformy.

Oto, co rozwiązało to dla mnie w Archlinux:

$ 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

Rozwiązanie @VonC było blisko, ale polecenie git config powinno wskazywać na plik wykonywalny. Dlatego mi to nie wyszło.

marcosdsanchez
źródło
Sformatowałem ponownie moją odpowiedź, aby odzwierciedlić Twój wniosek. Zbudowałem go (nie był domyślnie zbudowany w mojej dystrybucji git 1.8) i przetestowałem go dziś rano. To działa.
VonC
1
Jeśli otrzymujesz Package gnome-keyring-1 was not found in the pkg-config search path., brakuje Ci bibliotek programistów dla gnome-keyring. W Ubuntu są one dostępne z apt-get install libgnome-keyring-dev. Musiałem również ręcznie pobrać repozytorium git contrib z github.com/git/git/tree/master/contrib i umieścić je w / usr / share / git-core /. Te pliki nie są już dołączane do domyślnej instalacji git, przynajmniej przy użyciu oficjalnego git-core ubuntu ppa.
Johann
1
To całkiem dobrze wyjaśnia, dlaczego pakiet aur git-credential-gnomekeyringzniknął, szkoda, że ​​w AUR nie ma takich informacji.
ryenus
Na Ubuntu nie mam folderu git w /usr/share/... tylko gitweb i git-core. Ale jestem na Git 1.7.9. Czy to dlatego ...?
temporary_user_name
1
Począwszy od 2017 na Arch, wystarczy zainstalować libgnome-keyring(przynajmniej jeśli używasz gnome).
ald.li
25

Aktualizacja Q4 2016:

  • Unix, Mac (Git 2.11+)

    git config --global credential.helper libsecret
    

(Zobacz „ Błąd podczas używania pomocnika poświadczeń Git zgnome-keyring ”)

  • Okna:

    git config --global credential.helper manager
    

(Zobacz „ Jak wylogować się z konsoli Git Bash w systemie Windows? ”: To znaczy Git dla Windows z najnowszym Microsoft Git Credential Manager dla Windows )


Oryginalna odpowiedź (2012)

Credential Helpers, dla platform Windows, Mac i Unix, zostały wprowadzone jako pierwsze w repozytorium „git-credential-helper” , które teraz zostało uwzględnione w dystrybucji git :

To repozytorium zawiera zestaw pomocników poświadczeń Git ( gitcredentials(7)), które są częścią git(lub mają zostać wniesione w przyszłości).

$ 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

podczas budowania zostanie zainstalowany w /path/to/git/credentialkatalogu.

Aby użyć tego zaplecza, możesz dodać go do (globalnej) konfiguracji Git, ustawiając

(tutaj dla Uniksa):

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

Uwaga dotycząca systemu Windows:

Przypuszczam, że można by stworzyć program działający w systemie Windows i wywołać bibliotekę typu „ pypi keyring 0.10 .
Ale to jest zaplecze i nie używasz go bezpośrednio z Gita.

To, czego używasz, to „pomocnik poświadczeń” (który z kolei wywoła dowolny interfejs API poświadczeń w systemie Windows ).

GitHub dla Windows dostarcza takiego pomocnika (jako plik wykonywalny o nazwie ... github) i może przechowywać twoje poświadczenia na czas trwania sesji Windows.
Uruchom powłokę z tego okna „GitHub for Windows”, a zobaczysz wpisanie „git config --system -l”:

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

credential.helper=!github --credentialsCzęść wezwie poświadczeń pomocnika „ github”.

$ git config [--global] credential.helper $BACKEND
VonC
źródło
Nie to, czego szukam. Odpowiedź powinna brzmieć tylko * nix.
marcosdsanchez
@marcosdsanchez ok, zredagowałem moją odpowiedź, dodając konfigurację i użycie gnome-keyring na Uniksie z Gitem.
VonC
Chcę użyć funkcji 1.8.0 gita, która już jest. Nie kod strony trzeciej. Dzięki.
marcosdsanchez
@marcosdsanchez, musisz skompilować github.com/git/git/tree/master/contrib/credential/gnome-keyring (który jest spakowany z git). Po skompilowaniu można go zainstalować i używać, jak zilustrowano w mojej odpowiedzi.
VonC
Myślę, że nie ma wbudowanego pliku binarnego?
marcosdsanchez
15

Aktualizacja październik 2018

GNOME wycofał libgnome-keyring i zastąpił go libsecret. Commit https://github.com/git/git/commit/87d1353a6a dodał nowy pomocnik poświadczeń / usr / libexec / git-core / git-credential-libsecret.

git config --global credential.helper libsecret

vk5tu
źródło
2
Prawdopodobnie powinien to być komentarz do dowolnej odpowiedzi opartej na gnomach.
Murmel
Zgadzam się, gnome-keyringoparte na odpowiedzi odpowiedzi należy odpowiednio zredagować. Może po prostu wykluczyć całą opcję. To w ogóle nie zadziałało na Ubuntu 19.10.
Mario
11

Dla każdego w Fedorze nieznacznie zredagowałem odpowiedź Jamesa Warda:

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
źródło
2
Jestem zdezorientowany, czy nie jest to już zawarte w pakietach git? Co to jest ten plik w pakiecie fc19, git-1.8.3.1-1.fc19.x86_64. Jest to plik tutaj: /usr/libexec/git-core/git-credential-gnome-keyring.
slm
10
W Fedorze 21, git 2.1.0, możesz po prostu wykonać:git config --global credential.helper gnome-keyring
RedPoppy
Fedora 32: sudo dnf install git-credential-libsecretwtedygit config --global credential.helper libsecret
vk5tu
8

Po prostu dodaj te dwie linie do swojego ~/.gitconfigpliku:

[credential]
    helper = gnome-keyring

Następnym razem, gdy Git poprosi Cię o hasło, wprowadzone hasło zostanie zapisane w Gnome Keyring (możesz to zobaczyć za pomocą seahorsenarzędzia) i nie zostaniesz poproszony o hasło ponownie.

Zakłada się, że twoja wersja Git jest wystarczająco nowa (jak 2.1.0) i korzystasz z Linux Fedora, RHEL lub CentOS. W przypadku starszych wersji lub innych systemów operacyjnych / dystrybucji sprawdź inne odpowiedzi.

oliver
źródło
6
W Ubuntu 16.04:git: 'credential-gnome-keyring' is not a git command.
ferit
@Saibot: ups, masz rację. Wygląda na to, że Fedora / RHEL to zapewnia, ale Ubuntu nie. Zatem odpowiedź Jamesa Warda ( stackoverflow.com/a/14528360/2148773 ) jest w tym przypadku lepsza.
oliver
W RHEL musisz zainstalować git-gnome-keyring, jeśli jeszcze tego nie zrobiłeś.
SystemCrash
2

Niektóre dystrybucje są dostarczane z tą integracją jako pakiet instalacyjny, bez konieczności jakiejkolwiek kompilacji. W zależności od wersji GNOME, będziesz musiał zainstalować jedną gnome-keyringlub kilka libsecretwersji pakietu, na przykład git-credential-gnome-keyring(OpenSUSE Leap 42.3).

Jednak to samo w sobie nie umożliwi automatycznej integracji Git z bazą kluczy GNOME. Nadal musisz skonfigurować Git do korzystania z tej metody przechowywania danych logowania:

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
źródło
W Ubuntu 19.10 gnome-keyringopcja nie działa już dla mnie, ale instrukcja Jamesa Warda dotycząca używania libsecretnadal działa dobrze. Byłem jednak zdezorientowany zaleceniem użycia gnome-keyringpodanym tutaj: github.com/timhughes/git-credential-libsecret
Mario
libsecret(lub co find /usr -iname git-credential-libsecretdaje) to właściwa opcja w Gentoo Linux. Zauważ, że dev-vcs/gitmusi zostać wyłoniony z USE=gnome-keyring.
sphakka
1

W Fedorze musisz zainstalować

$ sudo dnf install git-credential-libsecret

i edytuj konfigurację git, aby użyć pomocnika poświadczeń.

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

FYI libsecretpakiet został niedawno podzielony, zobacz post z @rugk . Dlatego użytkownicy muszą ponownie zainstalować ten pakiet.

kinafu
źródło