Cómo usar git con la integración de gnome-keyring

Respuestas:

193

La respuesta de @ marcosdsanchez es para Arch (que responde a la pregunta original) pero estoy en Ubuntu. Para 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

Para 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
fuente
9
Al principio dudaba hacer esto, pero finalmente lo hice y funciona perfectamente. Como dicen los documentos de gitcredentials , es posible que también desee hacer git help -a | grep credential-y ver si tiene otros ayudantes instalados. Los que vienen por defecto son credential-cache(recuerde la contraseña por un tiempo después de ingresarla, 15 minutos por defecto), y credential-store(solo almacene la contraseña en texto sin formato en un archivo sin cifrar en el disco, ~/.git-credentialspor defecto).
ShreevatsaR
51
¿Alguien podría explicar por qué esto debe compilarse manualmente y no está disponible de forma predeterminada a través de un paquete?
lanoxx
44
Trabajado en Ubuntu 14.04 LTS!
Eugene Kulabuhov
44
solo tenía que hacer chmod 0755 git-credential-gnome-keyringpara agregar permiso de ejecución a otros que no sean root
Lari Hotari
8
Sigue siendo válido para Ubuntu 16.04 LTS
Eugene Kulabuhov
54

Git 1.8.0 viene con soporte para gnome-keyring, pero el binario debe compilarse para su plataforma.

Esto es lo que me resolvió en 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 solución @VonC estaba cerca, pero el comando git config debería apuntar al ejecutable. Por eso no funcionaba para mí.

marcosdsanchez
fuente
He reformateado mi respuesta para reflejar su conclusión. Lo he compilado (no fue compilado por defecto en mi distribución git 1.8) y lo probé esta mañana. Funciona
VonC
1
Si está obteniendo, Package gnome-keyring-1 was not found in the pkg-config search path.le faltan las bibliotecas de desarrollo para gnome-keyring. En Ubuntu estos están disponibles con apt-get install libgnome-keyring-dev. Además, tuve que descargar el repositorio git contrib manualmente desde github.com/git/git/tree/master/contrib y ponerlo en / usr / share / git-core /. Estos archivos ya no se incluyen con una instalación de git predeterminada, al menos con el oficial git-core ubuntu ppa.
Johann
1
Esto explica muy bien por qué el paquete aur git-credential-gnomekeyringse ha ido, lástima que en AUR no haya tal información.
ryenus
En ubuntu no tengo una carpeta git en /usr/share/... solo gitweb y git-core. Pero estoy en Git 1.7.9. ¿Podría ser por eso ...?
temporary_user_name
1
A partir de 2017 en Arch, la simple instalación libgnome-keyringes suficiente (al menos si está utilizando gnome).
ald.li
25

Actualización Q4 2016:

  • Unix, Mac (Git 2.11+)

    git config --global credential.helper libsecret
    

(Consulte " Error al usar Git credential helper congnome-keyring ")

  • Ventanas:

    git config --global credential.helper manager
    

(Consulte " ¿Cómo cerrar sesión en la consola de Git Bash en Windows? ": Es Git para Windows con el último Microsoft Git Credential Manager para Windows )


Respuesta original (2012)

Credential Helpers, para plataformas Windows, Mac y Unix, se introdujeron por primera vez en el repositorio "git-credential-helper" , que ahora se ha incluido en git distro :

Este repositorio contiene el conjunto de ayudantes de credenciales de Git ( gitcredentials(7)) que son parte de git(o que se pretende que contribuyan en el futuro).

$ 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

cuando se compila, se instalará en el /path/to/git/credentialdirectorio.

Para usar este backend, puede agregarlo a su configuración Git (global) configurando

(aquí para Unix):

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

Nota para Windows:

Supongo que podría hacer que un programa se ejecute en Windows y llame a una biblioteca como " pypi keyring 0.10 .
Pero ese es el back-end, y no lo usa directamente desde Git.

Lo que está utilizando es un "asistente de credenciales" (que, a su vez, llamará a cualquier API de credenciales que desee en Windows ).

GitHub para Windows proporciona dicho asistente (como un ejecutable llamado ... github) y puede almacenar sus credenciales durante la sesión de Windows.
Inicie un shell desde esa ventana "GitHub para Windows", y verá, escribiendo "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 --credentialsparte llamará al credencial auxiliar ' github'.

$ git config [--global] credential.helper $BACKEND
VonC
fuente
No es lo que estoy buscando. La respuesta debería ser * nix solamente.
marcosdsanchez
@marcosdsanchez ok, he editado mi respuesta para incluir una configuración y uso de gnome-keyring en Unix con Git.
VonC
Quiero usar la función 1.8.0 de git, que ya está allí. No es un código de terceros. Gracias.
marcosdsanchez
@marcosdsanchez, entonces necesita compilar github.com/git/git/tree/master/contrib/credential/gnome-keyring (que está empaquetado con git). Una vez compilado, lo instalaría y usaría como se ilustra en mi respuesta.
VonC
¿Supongo que no hay binario incorporado?
marcosdsanchez
15

Actualización octubre 2018

GNOME ha desaprobado el llavero libgnome y lo ha reemplazado con libsecret. Commit https://github.com/git/git/commit/87d1353a6a agregó una nueva credencial auxiliar / usr / libexec / git-core / git-credential-libsecret.

git config --global credential.helper libsecret

vk5tu
fuente
2
Probablemente, este debería ser un comentario sobre cualquier respuesta basada en llavero de gnomo aquí.
Murmel
De acuerdo, las gnome-keyringrespuestas basadas deben editarse en consecuencia. Tal vez solo excluya toda la opción. Eso no funcionó para mí en Ubuntu 19.10.
Mario
11

Para cualquiera en Fedora, edité la respuesta de James Ward ligeramente:

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
fuente
2
Estoy confundido, ¿no está esto ya incluido con los paquetes git? ¿Cuál es este archivo entonces dentro del paquete fc19, git-1.8.3.1-1.fc19.x86_64? Hay este archivo aquí: /usr/libexec/git-core/git-credential-gnome-keyring.
slm
10
En Fedora 21, git 2.1.0, simplemente puede hacer:git config --global credential.helper gnome-keyring
RedPoppy
7

Simplemente agregue estas dos líneas a su ~/.gitconfigarchivo:

[credential]
    helper = gnome-keyring

La próxima vez que Git le solicite una contraseña, la contraseña ingresada se guardará en Gnome Keyring (puede ver esto con la seahorseherramienta) y no se le solicitará la contraseña nuevamente.

Esto supone que su versión de Git es lo suficientemente nueva (como 2.1.0) y que está bajo Linux Fedora, RHEL o CentOS. Para versiones anteriores u otros sistemas operativos / distribuciones, consulte las otras respuestas.

Oliver
fuente
66
En Ubuntu 16.04:git: 'credential-gnome-keyring' is not a git command.
ferit
@Saibot: whoops, tienes razón. Parece que Fedora / RHEL proporciona esto, pero Ubuntu no. Entonces la respuesta de James Ward ( stackoverflow.com/a/14528360/2148773 ) es mejor en ese caso.
Oliver
2

Algunas distribuciones vienen con esta integración como un paquete de instalación, sin requerir ninguna compilación. Dependiendo de su versión de GNOME, necesitará instalar una gnome-keyringo libsecretvarias versiones del paquete, algo como git-credential-gnome-keyring(OpenSUSE Leap 42.3).

Sin embargo, esto en sí mismo no permitirá la integración de Git con GNOME Keyring automáticamente. Aún debe configurar Git para usar este método de almacenamiento de credenciales:

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
fuente
En Ubuntu 19.10, la gnome-keyringopción ya no funciona para mí, pero las instrucciones de uso de James Ward libsecrettodavía funcionan bien. Sin embargo, estaba confundido por la recomendación de uso gnome-keyringdada aquí: github.com/timhughes/git-credential-libsecret
Mario
libsecret(o lo que find /usr -iname git-credential-libsecretda) es la opción correcta en Gentoo Linux. Tenga en cuenta que dev-vcs/gitdebe surgir con USE=gnome-keyring.
sphakka
1

En Fedora necesitas instalar

$ sudo dnf install git-credential-libsecret

y edite su configuración de git para usar el asistente de credenciales.

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

Para su información, el libsecretpaquete se ha dividido recientemente, vea la publicación de @rugk . Es por eso que los usuarios necesitan reinstalar este paquete.

kinafu
fuente