Qual è il modo corretto di usare git con repository gnome-key e http (s)?


43

Attualmente, ogni volta che io git pullo git pushun repository http (s), ottengo quanto segue:

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

Questo va bene per un uso poco frequente, ma inizia a diventare davvero fastidioso molto rapidamente. Sfortunatamente, il passaggio a ssh non è un'opzione in questo caso.

Ho letto che le versioni precedenti gitfornivano un "archivio" e una "cache" di credenziali, ma ciò non era consigliato perché memorizzava la password in testo normale.

MA

Le versioni più recenti di gitapparentemente archiviano le credenziali git in gnome-keyring, ma devono essere configurate correttamente.

Ho provato a seguire altre risposte (non Ubuntu) su SO per farlo funzionare (vale a dire questo ), ma mi viene ancora presentato il nome utente e la password.

Qual è il modo corretto e più sicuro per archiviare le gitcredenziali per i repository http e come si fa a farli funzionare su Ubuntu?


Dovresti menzionare quali metodi hai provato. Altrimenti potresti trovare risposte che suggeriscono esattamente quelle.
Muru,

@muru Perché hai rimosso l'enfasi che ho aggiunto per la leggibilità? Ora è solo una chiazza di testo e le ragioni che differenziano la domanda dagli altri e la domanda effettiva è meno ovvia.
tu-Reinstate Monica-dor duh,

Una intera frase in grassetto e in corsivo è difficilmente leggibile.
Muru,

1
@muru Mi permetto di dissentire. Trovo il testo in grassetto e in corsivo mette in evidenza le parti essenziali della domanda.
tu-Reinstate Monica-dor duh,

Risposte:


45

gnome-credential-helper è ora obsoleto.

Invece, usa libsecret. Se non è già integrato nel tuo Ubuntu, usa la seguente procedura:

  1. È possibile installare libsecrete le librerie di sviluppo con:

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

  2. Quindi è necessario creare il gestore delle credenziali

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

    sudo make

  3. Infine, dovresti puntare git sul file appena creato nella tua configurazione:

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

Maggiori dettagli su https://stackoverflow.com/a/40312117/2017781


1
Potresti voler notare che questa soluzione si applica solo alle versioni git> = 2.11 (dove è possibile trovare la directory libsecret)
Charles Roberto Canato,

1
È sicuro? Dove sono memorizzati i segreti? La trasmissione e lo stoccaggio sono sicuri? C'è qualche documentazione ufficiale? Apparentemente, come in questa pagina e in questa pagina , è in "Main" e gestito da Debian / Ubuntu. E: "Comunica con il" Servizio segreto "usando DBus".
Caw

1
@caw: In GNOME, "Secret Service" è lo stesso demone gnome-keyring, solo attraverso un'API diversa. (Il piano libsecret era di consentire ad altri DE di creare i propri backend supportando la stessa API, ad esempio KDE aveva pianificato di implementarlo in kwalletd.)
Grawity

5
Aggiornamento della mia risposta preferita in quanto posso verificare che funzioni il 18.04. :)
tu-Reinstate Monica-dor duh,

44

Devi configurare git credential helpercon Gnome Keyring:

Installa e compila lo sviluppo Gnome Keyring:

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

E imposta le credenziali:

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

È davvero strano. Semanticamente, non ci dovrebbe essere alcuna differenza tra la risposta nel link e questa risposta. Ma per qualche ragione questa risposta funziona dove l'altra no.
tu-Reinstate Monica-dor duh,

Quindi esegui git pusho git pullcome di consueto e la prima volta chiederà ansd store, e ogni volta dopo lo otterrà dal portachiavi. Per verificarlo, esegui seahorse. Dovrebbe essere elencato in "Password" -> "Accesso".
tu-Reinstate Monica-dor duh,

@tudor È strano, non vedo alcuna differenza "concettuale" tra la mia risposta e quella di collegamento. Sono contento che aiuti.

Mi sembra strano che tu debba ancora eseguire il comando "make", ma questi passaggi funzionano alla grande. Grazie!
DaveTheScientist,

2

Questo semplice approccio sembra essere sufficiente sul mio Ubuntu 18.04.1 con git 2.17.1:

git config --global credential.helper cache

È possibile specificare un timeout di un'ora (= 3600 secondi) in questo modo:

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

Ulteriori letture nel manuale .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.