Comment utiliser git avec l'intégration gnome-keyring

129

Git 1.8.0 prend en charge l'intégration avec gnome-keyring.

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

Après avoir lu la documentation sur les helpers d'informations d'identification git: http://git-scm.com/docs/gitcredentials.html

Je n'ai pas pu trouver un moyen d'utiliser cette nouvelle fonctionnalité. Comment puis-je l'intégrer? J'utilise Archlinux avec git installé à partir du référentiel d'Archlinux. (git 1.8.0)

Marcosdsanchez
la source

Réponses:

193

La réponse de @ marcosdsanchez est pour Arch (qui répond à la question d'origine) mais je suis sur Ubuntu. Pour 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

Pour 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
la source
9
J'ai hésité à le faire au début, mais je l'ai finalement fait et cela fonctionne parfaitement. Comme le dit la documentation pour gitcredentials , vous pouvez également le faire git help -a | grep credential-et voir si d'autres helpers sont installés. Ceux qui viennent par défaut sont credential-cache(rappelez-vous le mot de passe pendant un certain temps après l'avoir entré, 15 minutes par défaut) et credential-store(stockez simplement le mot de passe en texte clair sur un fichier non chiffré sur le disque, ~/.git-credentialspar défaut).
ShreevatsaR
51
Quelqu'un pourrait-il expliquer pourquoi cela doit être compilé manuellement et n'est pas disponible par défaut via un package?
lanoxx
4
Travaillé sous Ubuntu 14.04 LTS!
Eugene Kulabuhov
4
juste eu à faire chmod 0755 git-credential-gnome-keyringpour ajouter l'autorisation d'exécution à d'autres que root
Lari Hotari
8
Toujours valable pour Ubuntu 16.04 LTS
Eugene Kulabuhov
54

Git 1.8.0 est livré avec le support gnome-keyring mais le binaire doit être compilé pour votre plate-forme.

C'est ce qui l'a résolu pour moi dans 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

La solution @VonC était proche, mais la commande git config devrait pointer vers l'exécutable. C'est pourquoi cela ne fonctionnait pas pour moi.

Marcosdsanchez
la source
J'ai reformaté ma réponse pour refléter votre conclusion. Je l'ai construit (il n'était pas construit par défaut dans ma distribution git 1.8) et l'ai testé ce matin. Ça marche.
VonC
1
Si vous obtenez, il Package gnome-keyring-1 was not found in the pkg-config search path.vous manque les bibliothèques de développement pour gnome-keyring. Sur Ubuntu, ils sont disponibles avec apt-get install libgnome-keyring-dev. De plus, je devais télécharger manuellement le repo git contrib depuis github.com/git/git/tree/master/contrib et le mettre dans / usr / share / git-core /. Ces fichiers ne sont plus inclus avec une installation git par défaut, du moins en utilisant le ppa officiel git-core ubuntu.
Johann
1
Cela explique assez bien pourquoi le paquet aur a git-credential-gnomekeyringdisparu, dommage que dans AUR il n'y ait pas de telles informations.
ryenus
Sur ubuntu, je n'ai pas de dossier git dans /usr/share/... seulement gitweb et git-core. Mais je suis sur Git 1.7.9. Serait-ce pourquoi ...?
temporary_user_name
1
À partir de 2017 sur Arch, la simple installation libgnome-keyringest suffisante (du moins si vous utilisez gnome).
ald.li
25

Mise à jour Q4 2016:

  • Unix, Mac (Git 2.11+)

    git config --global credential.helper libsecret
    

(Voir " Erreur lors de l'utilisation de l'assistant d'identification Git avecgnome-keyring ")

  • Les fenêtres:

    git config --global credential.helper manager
    

(Voir « Comment se déconnecter de la console Git Bash sous Windows? »: C'est Git pour Windows qui utilise le dernier Microsoft Git Credential Manager pour Windows )


Réponse originale (2012)

Les Credential Helpers, pour les plates-formes Windows, Mac et Unix, ont été introduits en premier dans le repo "git-credential-helper" , qui a maintenant été inclus dans git distro :

Ce référentiel contient l'ensemble des assistants d'identification Git ( gitcredentials(7)) qui font partie de git(ou sont censés être contribués à l'avenir).

$ 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

lors de la construction, il serait installé dans le /path/to/git/credentialrépertoire.

Pour utiliser ce backend, vous pouvez l'ajouter à votre configuration (globale) Git en définissant

(ici pour Unix):

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

Remarque pour Windows:

Je suppose que vous pouvez créer un programme fonctionnant sous Windows et appeler une bibliothèque comme " pypi keyring 0.10 .
Mais c'est le back-end, et vous ne l'utilisez pas directement depuis Git.

Ce que vous utilisez est un "assistant d'identification" (qui, à son tour, appellera n'importe quelle API d'informations d'identification qu'il souhaite sous Windows ).

GitHub pour Windows fournit une telle aide (sous la forme d'un exécutable appelé ... github) et peut stocker vos informations d'identification pendant la durée de la session Windows.
Lancez un shell à partir de cette fenêtre "GitHub pour Windows", et vous verrez, en tapant "git config --system -l":

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

La credential.helper=!github --credentialspartie appellera l'assistant d'identification ' github'.

$ git config [--global] credential.helper $BACKEND
VonC
la source
Pas ce que je recherche. La réponse devrait être * nix uniquement.
marcosdsanchez
@marcosdsanchez ok, j'ai édité ma réponse pour inclure une configuration et une utilisation de gnome-keyring sous Unix avec Git.
VonC
Je veux utiliser la fonctionnalité 1.8.0 de git, qui est déjà là. Pas de code tiers. Merci.
marcosdsanchez
@marcosdsanchez alors vous devez compiler github.com/git/git/tree/master/contrib/credential/gnome-keyring (qui est fourni avec git). Une fois compilé, vous l'installez et l'utilisez comme illustré dans ma réponse.
VonC
Je suppose qu'il n'y a pas de binaire intégré?
marcosdsanchez
15

Mise à jour octobre 2018

GNOME a désapprouvé libgnome-keyring et l'a remplacé par libsecret. Commit https://github.com/git/git/commit/87d1353a6a a ajouté un nouvel assistant d'identification / usr / libexec / git-core / git-credential-libsecret.

git config --global credential.helper libsecret

vk5tu
la source
2
Cela devrait probablement être un commentaire sur toute réponse basée sur un trousseau de clés gnome ici.
Murmel
D'accord, les gnome-keyringréponses basées doivent être modifiées en conséquence. Peut-être simplement exclure toute l'option. Cela n'a pas du tout fonctionné pour moi sur Ubuntu 19.10.
Mario
11

Pour quiconque sur Fedora, j'ai légèrement modifié la réponse de James Ward:

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
la source
2
Je suis confus, n'est-ce pas déjà inclus dans les packages git? Quel est ce fichier alors dans le package fc19, git-1.8.3.1-1.fc19.x86_64. Il y a ce fichier ici: /usr/libexec/git-core/git-credential-gnome-keyring.
slm
10
Dans Fedora 21, git 2.1.0, vous pouvez simplement faire:git config --global credential.helper gnome-keyring
RedPoppy
7

Ajoutez simplement ces deux lignes à votre ~/.gitconfigfichier:

[credential]
    helper = gnome-keyring

La prochaine fois que Git vous demandera un mot de passe, le mot de passe saisi sera enregistré dans Gnome Keyring (vous pouvez le voir avec l' seahorseoutil), et le mot de passe ne vous sera plus demandé par la suite.

Cela suppose que votre version de Git est suffisamment nouvelle (comme 2.1.0) et que vous êtes sous Linux Fedora, RHEL ou CentOS. Pour les anciennes versions ou d'autres systèmes d'exploitation / distributions, consultez les autres réponses.

oliver
la source
6
Dans Ubuntu 16.04:git: 'credential-gnome-keyring' is not a git command.
ferit
@Saibot: oups, vous avez raison. On dirait que Fedora / RHEL fournit cela, mais pas Ubuntu. La réponse de James Ward ( stackoverflow.com/a/14528360/2148773 ) est donc meilleure dans ce cas.
oliver
2

Certaines distributions sont livrées avec cette intégration sous forme de package d'installation, sans nécessiter de compilation. En fonction de votre version de GNOME, vous devrez installer l'une gnome-keyringou l' autre des libsecretversions du paquet, quelque chose comme git-credential-gnome-keyring(OpenSUSE Leap 42.3).

Cependant, cela en soi n'activera pas automatiquement l'intégration de Git avec le trousseau de clés GNOME. Vous devez toujours configurer Git pour utiliser cette méthode de stockage des informations d'identification:

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
la source
Sur Ubuntu 19.10, l' gnome-keyringoption ne fonctionne plus pour moi, mais les instructions de James Ward en utilisant libsecretfonctionnent toujours bien. Cependant, j'étais confus par la recommandation d'utilisation gnome-keyringdonnée ici: github.com/timhughes/git-credential-libsecret
Mario
libsecret(ou ce qui find /usr -iname git-credential-libsecretdonne) est la bonne option dans Gentoo Linux. Notez que dev-vcs/gitdoit être émergé avec USE=gnome-keyring.
sphakka
1

Sur Fedora, vous devez installer

$ sudo dnf install git-credential-libsecret

et modifiez votre configuration git pour utiliser l'assistant d'identification.

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

Pour info, le libsecretpackage a été récemment divisé, voir le post de @rugk . C'est pourquoi les utilisateurs doivent réinstaller ce package.

kinafu
la source