Como posso obter o agente GPG para armazenar em cache minha senha?

15

Sou um desenvolvedor e geralmente assino o meu Git commit com a minha chave GPG. Consegui fazer com que o Agente GPG funcionasse corretamente no OSX, para que ele só me pedisse a senha uma vez por dia, mas estou tendo problemas para fazer a mesma coisa funcionar no Ubuntu 16.04.

Veja o que estou fazendo:

  • Eu tenho a configuração das minhas chaves GPG / etc.
  • Eu estou em um diretório Git.
  • adiciono alguns arquivos ao Git.
  • Em seguida, vou enviá-los ( git commit ) e recebo uma solicitação de senha GPG com esta aparência:

    $ git ci
    
    You need a passphrase to unlock the secret key for
    user: "Randall Degges <[email protected]>"
    4096-bit RSA key, ID 8F700DA2, created 2016-04-05
    
    [master 1740961] blah
     1 file changed, 1 insertion(+)
    

O problema é: sempre que faço um commit, sou solicitado novamente pela senha do GPG novamente.

O que eu gostaria de fazer é configurar o Agente GPG para armazenar em cache a minha senha por um dia inteiro, então ela só precisa ser digitada uma vez.

Eu li várias documentações e postagens de blog, e aqui está o que eu tentei até agora ...

Primeiro, modifiquei meu arquivo ~/.zshrc (eu uso zsh) para definir o seguinte:

# GPG Agent
export GPG_TTY=$(tty)
export GPGKEY=8F700DA2

Agora, pelo que eu li, só isso deve dar certo depois de reiniciar o gpg-agent, mas isso não acontece.

Então, a próxima coisa que fiz foi definir um arquivo ~/.gnupg/gpg-agent.conf conforme explicado na página man gpg-agent :

# Set the default cache time to 1 day.
default-cache-ttl       86400
default-cache-ttl-ssh   86400

# Set the max cache time to 30 days.
max-cache-ttl           2592000
max-cache-ttl-ssh       2592000

Isso também não tem efeito.

Eu também tentei vários métodos de blog, etc., mas nada parece funcionar. Alguém pode me dar algumas dicas para as coisas que eu possa estar faltando?

    
por rdegges 01.08.2016 / 03:18

2 respostas

17

Além de configurar os tempos de cache em gpg-agent.conf , você também precisa ter certeza de que o GnuPG está realmente conectando o gpg-agent . GnuPG 2 e para cima geralmente, o ramo GnuPG 1 não. Por padrão, o git está usando o gpg binary, que (no momento da escrita desta resposta) ainda é o GnuPG 1, enquanto o GnuPG 2 é instalado como gpg2 na maioria dos sistemas.

No final, você tem que possibilidades:

  • configure o git para usar gpg2 alterando a configuração do git:

    'git config --global gpg.program gpg2'
    
  • configure gpg / GnuPG 1 para usar gpg-agent adicionando use-agent a gpg.conf
por Jens Erat 01.08.2016 / 10:11
0

Além da resposta acima, você também pode simplesmente alterar o gpg padrão no seu sistema para gpg2 em vez de gpg1 .

Se git config --global gpg.program gpg2 funcionar para você, mas você não quiser deixar isso em sua configuração do git (no meu caso, porque eu uso a mesma configuração no macOS), você pode simplesmente trocar o padrão gpg out. / p>

Eu segui o guia aqui , que foi apenas:

$ sudo mv /usr/bin/gpg /usr/bin/gpg1
$ sudo update-alternatives --verbose --install /usr/bin/gpg gnupg /usr/bin/gpg2 50

Isso torna gpg1 o antigo gpg binário e symlinks /usr/bin/gpg -> /usr/bin/gpg2 (com nome gnupg e prioridade 50).

Mudar o padrão gpg poderia, em teoria, quebrar alguns pacotes em seu sistema, mas o Debian Stretch (a versão estável atual do Debian) define gpg2 como o padrão gpg de maneira similar, então você não deve ter muitos problemas.

    
por gib 04.09.2017 / 20:32