Quelle est la bonne façon d'utiliser git avec gnome-keyring et http (s) repo?

43

Actuellement, chaque fois que je git pullou git pushun référentiel http (s), je reçois ce qui suit:

$ git pull
Username for 'https://gitrepos.reposdomain.com': [email protected]
Password for 'https://[email protected]@gitrepos.reposdomain.com': 

Ceci est acceptable pour une utilisation peu fréquente, mais commence à devenir très ennuyant très rapidement. Malheureusement, le passage à SSH n'est pas une option dans ce cas.

J'ai lu que les versions antérieures de git"stock" et "cache" fournissaient les informations d'identification, mais que cela n'était pas conseillé, car le mot de passe était stocké en texte brut.

MAIS

Les versions les plus récentes d’ gitapparemment stockent les informations d’identification Git dans le gnome-keyring, mais elles doivent être configurées correctement.

J'ai essayé de suivre d'autres réponses (non Ubuntu) sur SO pour que cela fonctionne (à savoir celle-ci ), mais le nom d'utilisateur et le mot de passe me sont toujours présentés.

Quel est le moyen le plus sûr et le plus sûr de stocker les gitinformations d’identité pour le dépôt http (s) et comment peut-on les faire fonctionner sur Ubuntu?

tu-Reinstate Monica-dor duh
la source
Vous devriez mentionner les méthodes que vous avez essayées. Sinon, vous pourriez trouver des réponses suggérant exactement celles-ci.
Muru
@muru Pourquoi avez-vous supprimé l'accent que j'ai ajouté sur la lisibilité? Il ne s’agit plus que d’un bloc de texte et des raisons qui différencient la question des autres et la question réelle est moins évidente.
tu-Reinstate Monica-dor duh
Une phrase entière en gras et en italique est difficilement lisible.
Muru
1
@muru je vous prie de différer. Je trouve que le texte en gras et en italique fait ressortir les parties essentielles de la question.
tu-Reinstate Monica-dor duh

Réponses:

45

gnome-credential-helper est maintenant obsolète.

Au lieu de cela, utilisez libsecret. Si ce n'est pas déjà fait, utilisez la procédure suivante:

  1. Vous pouvez installer libsecretet les bibliothèques de développement avec:

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

  2. Ensuite, vous devez créer le gestionnaire des informations d'identification

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

    sudo make

  3. Enfin, vous devriez pointer git sur le fichier nouvellement créé dans votre configuration:

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

Plus de détails sur https://stackoverflow.com/a/40312117/2017781

Eddygeek
la source
1
Vous voudrez peut-être noter que cette solution s'applique uniquement aux versions de git> = 2.11 (où le répertoire libsecret peut alors être trouvé)
Charles Roberto Canato
1
Est-ce sécuritaire? Où sont les secrets stockés? La transmission et le stockage sont-ils sûrs? Y a-t-il une documentation officielle? Apparemment, selon cette page et cette page , il est dans «Main» et maintenu par Debian / Ubuntu. Et: "Il communique avec les" services secrets "à l'aide de DBus."
caw le
1
@caw: Dans GNOME, "Service secret" est le même démon gnome-keyring-daemon, uniquement via une API différente. (Le plan de libsecret était de permettre à d'autres DE de créer leur propre backend prenant en charge la même API, par exemple, KDE avait l'intention de l'implémenter dans kwalletd.)
grawity le
5
Mettre à jour ma réponse préférée pour vérifier que cela fonctionne le 18.04. :)
tu-Reinstate Monica-dor
44

Vous devez installer le git credential helperavec Gnome Keyring:

Installez et compilez le développement de Gnome Keyring:

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

Et configurez les informations d'identification:

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

la source
C'est vraiment bizarre. Sémantiquement, il ne devrait y avoir aucune différence entre la réponse dans le lien et cette réponse. Mais pour une raison quelconque, cette réponse fonctionne là où l'autre ne fonctionne pas.
tu-Reinstate Monica-dor duh
Puis lancez git pushou git pullcomme d'habitude et la première fois, il demandera à la boutique Ansd, et à chaque fois par la suite, il l'obtiendra du trousseau de clés. Pour le vérifier, lancez seahorse. Il devrait être listé sous "Mots de passe" -> "Login".
tu-Réintégrer Monica-dor duh
@tudor C'est étrange, je ne vois aucune différence "conceptuelle" entre ma réponse et celle du lien. Content que ça aide.
Cela me semble bizarre de devoir exécuter la commande "make", mais ces étapes fonctionnent très bien. Merci!
DaveTheScientist
2

Cette approche simple semble être suffisante sur mon Ubuntu 18.04.1 avec git 2.17.1:

git config --global credential.helper cache

Vous pouvez spécifier un délai d'expiration d'une heure (= 3600 secondes) comme suit:

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

Lecture complémentaire dans le manuel détaillé .

Stephan Henningsen
la source