Qual é a maneira correta de usar o git com repositórios de chaves gnome e http (s)?

43

Atualmente, sempre que eu git pullou git pushem um repositório http (s), recebo o seguinte:

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

Isso é aceitável para uso pouco frequente, mas começa a se tornar realmente irritante muito rapidamente. Infelizmente, mudar para ssh não é uma opção nesse caso.

Eu li que as versões anteriores gitforneciam credenciais "armazenamento" e "cache", mas isso não foi recomendado porque armazenava a senha em texto sem formatação.

MAS

gitAparentemente, versões mais recentes de aparentemente armazenam credenciais git no diretório gnome-keyring, mas precisam ser configuradas corretamente.

Eu tentei seguir outras respostas (não Ubuntu) no SO para fazer com que isso funcionasse (ou seja, este ), mas ainda recebo o prompt de nome de usuário e senha.

Qual é a maneira correta e mais segura de armazenar gitcredenciais para repositórios http (s) e como fazê-los funcionar no Ubuntu?

restabelecer Monica-dor duh
fonte
Você deve mencionar quais métodos você tentou. Caso contrário, você poderá encontrar respostas sugerindo exatamente essas.
muru 17/05
@muru Por que você removeu a ênfase que adicionei para facilitar a leitura? Agora é apenas uma gota de texto e os motivos que diferenciam a pergunta dos outros e a pergunta real são menos óbvias.
tu restabelece Monica-dor duh 17/05
Uma frase inteira em negrito e itálico dificilmente pode ser lida.
Muru 17/05
1
@ muru Eu imploro para diferir. Acho que o texto em negrito e itálico traz à tona as partes essenciais da questão.
tu-Restabelece Monica-dor duh 17/05

Respostas:

45

gnome-credential-helper agora está obsoleto.

Em vez disso, use libsecret. Se ainda não estiver integrado ao seu ubuntu, use o seguinte procedimento:

  1. Você pode instalar libsecrete as bibliotecas de desenvolvimento com:

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

  2. Então você precisa criar o gerenciador de credenciais

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

    sudo make

  3. Por fim, você deve apontar o git para o arquivo recém-criado em sua configuração:

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

Mais detalhes em https://stackoverflow.com/a/40312117/2017781

eddygeek
fonte
1
Você pode querer nota que esta solução só se aplica a versões git> = 2,11 (onde o libsecret dir pode ser encontrado)
Charles Roberto Canato
1
Isso é seguro? Onde estão guardados os segredos? A transmissão e o armazenamento são seguros? Existe alguma documentação oficial? Aparentemente, de acordo com esta página e esta página , está em "Principal" e é mantido pelo Debian / Ubuntu. E: “Ele se comunica com o 'Serviço Secreto' usando DBus.”
caw
1
@caw: No GNOME, "Serviço Secreto" é o mesmo daemon de chaveiro do gnome, apenas através de uma API diferente. (O plano libsecret foi para permitir que outro DES para construir as suas próprias infra- estruturas que suportam a mesma API, por exemplo KDE previstas para executar esta em kwalletd.)
grawity
5
A atualização da minha resposta preferida, como posso verificar se funciona na 18.04. :)
tu-Restabelece Monica-dor duh
44

Você precisa configurar o git credential helpercom o Gnome Keyring:

Instale e compile o desenvolvimento do Gnome Keyring:

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

E configure a credencial:

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

fonte
Isso é realmente estranho. Semântica, não deve haver diferença entre a resposta no link e esta resposta. Mas, por algum motivo, essa resposta funciona onde a outra não.
tu-Restabelece Monica-dor duh 25/05
Em seguida, execute git pushou git pullcomo normal e na primeira vez em que solicitará a loja ansd, e toda vez depois disso, obterá o chaveiro. Para verificar, execute seahorse. Ele deve estar listado em "Senhas" -> "Login".
tu restabelece Monica-dor duh 25/05
@ tudor Isso é estranho, não vejo nenhuma diferença "conceitual" entre a minha resposta e a do link. Fico feliz que isso ajuda.
Parece estranho para mim que você ainda precise executar o comando "make", mas essas etapas funcionam muito bem. Obrigado!
DaveTheScientist
2

Essa abordagem simples parece ser suficiente no meu Ubuntu 18.04.1 com git 2.17.1:

git config --global credential.helper cache

Você pode especificar um tempo limite de uma hora (= 3600 segundos) como este:

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

Leitura adicional no manual fino .

Stephan Henningsen
fonte