2016-04-12 13 views
5

Stavo cercando un modo per archiviare le credenziali in modo sicuro durante la connessione al nostro server Git che utilizza SSL. Mi sono imbattuto in questo suggerimento da @ james-ward (solo modifica che ho fatto mi è stato aggiornato il nostro config "sistema" invece del nostro config "globale" per Git (https://stackoverflow.com/a/14528360/6195194)Errore durante l'utilizzo di helper di credenziali Git con gnome-keyring come Sudo

sudo apt-get install libgnome-keyring-dev 
cd /usr/share/doc/git/contrib/credential/gnome-keyring 
sudo make 
git config --system credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring 

ho quindi possibile eseguire

git clone https://ipaddress/git/repo.git 

e l'aiutante credenziale memorizzerà le mie credenziali, tuttavia quando ho eseguito il seguente:

sudo git clone https://ipaddress/git/repo.git testfolder 

mi dà il seguente errore

0.123.
** (process:3713): CRITICAL **: Error communicating with gnome-keyring-daemon 

A volte ho bisogno di eseguire sudo git clone poiché a volte la directory in cui ho bisogno di fare un clone lo richiede. Qualsiasi aiuto sarebbe apprezzato.

Versioni sto usando: - git versione 1.9.1 - Ubuntu Server 14.0.4

Grazie in anticipo! -Richard O.

risposta

0

a volte bisogno di eseguire sudo git clone dato che a volte la directory in cui ho bisogno di fare un clone lo richiede. Qualsiasi aiuto sarebbe apprezzato

La cartella in cui si tenta di clonare il repository nei è stato creato da root in modo da non ha il permesso di scrivere o creare la cartella sotto di essa se non si è root (sudo), impostare le autorizzazioni (chmod o chown) e sarà possibile clonare nella cartella.

chmod 755 /path 
+0

Grazie per il vostro aiuto e questo ha molto senso. Un altro requisito mi ha costretto a utilizzare le chiavi SSH invece di HTTPS, quindi non ho più bisogno di usare git-credential-gnome-keyring. Ma mi sono assicurato di creare un account git dedicato e dare loro l'accesso per creare i propri repository in una determinata directory senza usare sudo basato sul tuo aiuto e sul suo funzionamento fantastico! –

1

L'utilizzo di sudo esegue il comando come utente root. È come chiedere al tuo sysadmin, se ne hai uno, di eseguire un comando per te. L'utente root è non è destinato a fare qualsiasi cosa inerente allo sviluppo, e quindi git è non destinato a essere utilizzato come root.

Una volta eseguito un comando come un altro utente (root o altro), è previsto che questo altro utente non possa comunicare normalmente con il tuo utente abituale (in particolare, non trova il tuo demone-keyring-daemon qui) .

Quindi, la risposta è: "non farlo". Se hai davvero bisogno di clonare in una particolare directory, concediti le autorizzazioni su quella directory come suggerito nella risposta di CodeWizard. In realtà, se hai bisogno di clonare in una directory dove non hai il permesso, chiediti se stai facendo qualcosa di sbagliato: in linea di principio, questo non dovrebbe accadere (la mia ipotesi è: hai già usato sudo troppo in passato e questo è il motivo per cui hai directory um-writable qui e là).

+2

Grazie per il tuo commento. Chiedere a te stesso "perché" stai usando sudo è sempre una buona pratica per vivere. –

26

Oltre all'uso di sudo, si noti che nel 2016, libgnome-keyring è specifico di GNOME ed è ora deprecato (dal January 2014, actually).

Git 2.11+ (4 ° trimestre 2016) includerà un nuovo helper di credenziali utilizzando libsecret.

Vedere [commit 87d1353] (https://github.com/git/git/commit/87d1353a6a133aafd2ef29ba6c740a8d3d71dadb) (09 ott 2016) di Mantas Mikulėnas (grawity).
(fusa per Junio C Hamano -- gitster -- in [commettere bfe800c] (https://github.com/git/git/commit/bfe800c9d758b4dd760e8457bc79d35362b1effd) 26 Ott 2016)

Un nuovo aiutante credenziale che parla tramite "libsecret" con le implementazioni di XDG servizio segreto API è stato aggiunto al contrib/credential/.

utilizza libsecret che può supportare altre implementazioni di XDG Secret API di servizio.

  1. È possibile installare libsecret e le librerie di sviluppo con:

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

  2. allora avete bisogno per costruire la gestione delle credenziali

    cd /usr/share/doc/git/contrib/credential/libsecret (copiare il credenziale/libsecret cartella da source, se non è installato automa camente)

    sudo make

  3. Infine, è necessario indicare la git al file appena creato nella configurazione:

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


Come notato da mati865 in the comments :

Va notato che alcune distro come Arch e Fedora forniscono helpers disponibili sia come binari che come sorgente.

  • Libsecret binario su Arch: /usr/lib/git-core/git-credential-libsecret e
  • Libsecret binario su Fedora: /usr/libexec/git-core/git-credential-libsecret.
+1

Provato per usare questo, la prima volta sembrava funzionare bene, ma su boots consequenziali ottengo '** (process: 774): CRITICAL **: secret_value_get_text: assertion 'value' failed'' e mi chiede di nuovo la mia password di github ... –

+0

@ JoséMaría stai usando Git 2.11. Non ho visto alcun commit che corregge un bug riguardante libsecret per il prossimo GIt 2.12. – VonC

+0

sì, sto usando Git 2.11 –

Problemi correlati