Como usar o git com a integração do gnome-keyring

129

O Git 1.8.0 suporta a integração com o gnome-keyring.

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

Depois de ler os documentos sobre os ajudantes de credenciais do git: http://git-scm.com/docs/gitcredentials.html

Não consegui encontrar uma maneira de usar esse novo recurso. Como posso integrá-lo? Estou usando o Archlinux com o git instalado no repositório do Archlinux. (git 1.8.0)

marcosdsanchez
fonte

Respostas:

193

A resposta de @ marcosdsanchez é para Arch (que responde à pergunta original), mas eu estou no 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
fonte
9
Eu estava hesitante em fazer isso no começo, mas finalmente fiz e funciona perfeitamente. Como dizem os documentos para gitcredentials , você também pode fazer git help -a | grep credential-e ver se possui outros auxiliares instalados. Os que vêm por padrão são credential-cache(lembre-se da senha por algum tempo depois de inseri-la, 15 minutos por padrão) e credential-store(apenas armazene a senha em texto sem formatação em um arquivo não criptografado no disco, ~/.git-credentialspor padrão).
precisa
51
Alguém poderia explicar por que isso precisa ser compilado manualmente e não está disponível por padrão através de um pacote?
lanoxx
4
Trabalhou no Ubuntu 14.04 LTS!
Eugene Kulabuhov
4
apenas tinha que fazer chmod 0755 git-credential-gnome-keyringpara adicionar permissão de execução para os outros do que raiz
Lari Hotari
8
Ainda válido para o Ubuntu 16.04 LTS
Eugene Kulabuhov
54

O Git 1.8.0 vem com suporte ao gnome-keyring, mas o binário precisa ser compilado para sua plataforma.

Isto é o que resolveu para mim no 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

A solução @VonC estava próxima, mas o comando git config deve apontar para o executável. É por isso que não estava funcionando para mim.

marcosdsanchez
fonte
Reformatei minha resposta para refletir sua conclusão. Eu o construí (não foi compilado por padrão na minha distribuição git 1.8) e testei esta manhã. Isso funciona.
VonC 15/11/12
1
Se você está recebendo, Package gnome-keyring-1 was not found in the pkg-config search path.estão faltando as bibliotecas de desenvolvimento para o gnome-keyring. No Ubuntu, estes estão disponíveis com apt-get install libgnome-keyring-dev. Além disso, eu tive que baixar o repositório git contrib manualmente em github.com/git/git/tree/master/contrib e colocá-lo em / usr / share / git-core /. Esses arquivos não são mais incluídos em uma instalação padrão do git, pelo menos usando o ppa oficial do git-core ubuntu.
Johann
1
Isso explica muito bem por que o pacote aur git-credential-gnomekeyringse foi, que pena que no AUR não existe essa informação.
Ryenus 19/04
No ubuntu, não tenho pasta git em /usr/share/... apenas gitweb e git-core. Mas eu estou no Git 1.7.9. Poderia ser por isso que ...?
temporary_user_name
1
A partir de 2017 no Arch, basta instalar o instalador libgnome-keyring(pelo menos se você estiver usando o gnome).
precisa saber é
25

Atualização do quarto trimestre de 2016:

  • Unix, Mac (Git 2.11+)

    git config --global credential.helper libsecret
    

(Consulte " Erro ao usar o auxiliar de credenciais do Git comgnome-keyring ")

  • Janelas:

    git config --global credential.helper manager
    

(Consulte " Como sair do console do Git Bash no Windows? ": É o Git for Windows usando o Microsoft Git Credential Manager mais recente para Windows )


Resposta original (2012)

Os Credential Helpers, para plataformas Windows, Mac e Unix, foram introduzidos primeiro no repositório "git-credential-helper" , que agora foi incluído na distribuição git :

Este repositório contém o conjunto de auxiliares de credenciais do Git ( gitcredentials(7)) que fazem parte git(ou pretendem contribuir com o 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

quando compilado, seria instalado no /path/to/git/credentialdiretório

Para usar esse back-end, você pode adicioná-lo à sua configuração Git (global) definindo

(aqui para Unix):

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

Nota para Windows:

Suponho que você possa criar um programa em execução no Windows e chamar uma biblioteca como " pypi keyring 0.10 .
Mas esse é o back-end e você não o usa diretamente no Git.

O que você está usando é um "auxiliar de credencial" (que, por sua vez, chamará qualquer API de credencial que desejar no Windows ).

O GitHub para Windows fornece esse auxiliar (como um executável chamado ... github) e pode armazenar suas credenciais durante a sessão do Windows.
Inicie um shell nas janelas do "GitHub for Windows" e você verá, digitando "git config --system -l":

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

A credential.helper=!github --credentialsparte chamará o auxiliar de credencial ' github'.

$ git config [--global] credential.helper $BACKEND
VonC
fonte
Não é o que estou procurando. A resposta deve ser apenas * nix.
marcosdsanchez
@marcosdsanchez ok, editei minha resposta para incluir a configuração e o uso do gnome-keyring no Unix com Git.
VonC 14/11/12
Eu quero usar o recurso 1.8.0 do git, que já está lá. Código não de terceiros. Obrigado.
marcosdsanchez
@marcosdsanchez, você precisa compilar o github.com/git/git/tree/master/contrib/credential/gnome-keyring (que é fornecido com o git). Uma vez compilado, você o instalaria e utilizaria como ilustrado na minha resposta.
VonC 14/11
Eu acho que não há binário embutido?
marcosdsanchez
15

Atualização outubro 2018

O GNOME substituiu o libgnome-keyring e o substituiu pelo libsecret. A confirmação https://github.com/git/git/commit/87d1353a6a adicionou um novo auxiliar de credencial / usr / libexec / git-core / git-credential-libsecret.

git config --global credential.helper libsecret

vk5tu
fonte
2
Provavelmente, este deve ser um comentário sobre qualquer resposta baseada em gnome-chave aqui.
Murmel
Concordo, gnome-keyringrespostas baseadas devem ser editadas de acordo. Talvez apenas exclua toda a opção. Isso não funcionou para mim no Ubuntu 19.10.
Mario
11

Para qualquer pessoa no Fedora, editei um pouco a resposta 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
fonte
2
Estou confuso, isso já não está incluído nos pacotes git? O que é esse arquivo no pacote fc19, git-1.8.3.1-1.fc19.x86_64. Há este arquivo aqui: /usr/libexec/git-core/git-credential-gnome-keyring.
Slm
10
No Fedora 21, git 2.1.0, você pode simplesmente fazer:git config --global credential.helper gnome-keyring
RedPoppy
7

Basta adicionar estas duas linhas ao seu ~/.gitconfigarquivo:

[credential]
    helper = gnome-keyring

Da próxima vez que o Git solicitar uma senha, a senha digitada será salva no chaveiro do Gnome (você pode ver isso com a seahorseferramenta) e não será solicitada a senha novamente posteriormente.

Isso pressupõe que sua versão do Git é suficientemente nova (como 2.1.0) e você está no Linux Fedora, RHEL ou CentOS. Para versões mais antigas ou outros sistemas operacionais / distribuições, verifique as outras respostas.

oliver
fonte
6
No Ubuntu 16.04:git: 'credential-gnome-keyring' is not a git command.
ferit
@ Saibot: gritos, você está certo. Parece que o Fedora / RHEL fornece isso, mas o Ubuntu não. Portanto, a resposta de James Ward ( stackoverflow.com/a/14528360/2148773 ) é melhor nesse caso.
Oliver
2

Algumas distribuições vêm com essa integração como um pacote de instalação, sem exigir nenhuma compilação. Dependendo da sua versão do GNOME, você precisará instalar gnome-keyringoulibsecret versões do pacote, algo como git-credential-gnome-keyring(OpenSUSE Leap 42.3).

No entanto, isso por si só não permitirá a integração do Git com o GNOME Keyring automaticamente. Você ainda deve configurar o Git para usar este método de armazenamento de credenciais:

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
fonte
No Ubuntu 19.10, a gnome-keyringopção não funciona mais para mim, mas as instruções de James Ward libsecretainda funcionam bem. No entanto, fiquei confuso com a recomendação de uso gnome-keyringfornecida aqui: github.com/timhughes/git-credential-libsecret
Mario
libsecret(ou o que find /usr -iname git-credential-libsecretdá) é a opção certa no Gentoo Linux. Observe que dev-vcs/gitdeve ser surgido com USE=gnome-keyring.
sphakka 23/03
1

No Fedora você precisa instalar

$ sudo dnf install git-credential-libsecret

e edite sua configuração do git para usar o auxiliar de credenciais.

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

Para sua informação, o libsecretpacote foi recentemente dividido, consulte a publicação do @rugk . É por isso que os usuários precisam reinstalar este pacote.

kinafu
fonte