Wie kann ich GPG Agent dazu bringen, mein Passwort zwischenzuspeichern?

21

Ich bin Entwickler und signiere meine Git-Commits normalerweise mit meinem GPG-Schlüssel. Ich konnte GPG Agent unter OSX ordnungsgemäß zum Laufen bringen, so dass ich nur einmal pro Tag nach meinem Passwort gefragt werde, aber ich habe Probleme, dasselbe unter Ubuntu 16.04 zu bekommen.

Folgendes mache ich:

  • Ich habe meine GPG-Schlüssel eingerichtet / etc.
  • Ich bin in einem Git-Verzeichnis.
  • Ich füge Git einige Dateien hinzu.
  • Ich gehe dann zu Commit ( git commit) und erhalte eine GPG-Passwortanfrage, die so aussieht:

    $ 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(+)
    

Das Problem ist: Jedes Mal, wenn ich ein Commit durchführe, werde ich erneut zur Eingabe meines GPG-Passworts aufgefordert.

Ich möchte GPG Agent so konfigurieren, dass mein Passwort einen ganzen Tag lang zwischengespeichert wird, sodass es nur einmal eingegeben werden muss.

Ich habe unzählige Dokumentationen und Blogbeiträge gelesen und hier ist, was ich bisher ausprobiert habe ...

Zuerst habe ich meine ~/.zshrcDatei geändert (ich verwende zsh), um Folgendes festzulegen:

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

Nach dem, was ich gelesen habe, sollte dies allein nach dem Neustart von gpg-agent der Trick sein, aber das tut es nicht.

Als nächstes habe ich eine ~/.gnupg/gpg-agent.confDatei definiert , wie auf der man gpg-agentSeite erklärt:

# 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

Dies hat ebenfalls keine Auswirkung.

Ich habe auch verschiedene Blog-Methoden usw. ausprobiert, aber nichts scheint zu funktionieren. Kann mir jemand Hinweise auf Dinge geben, die mir fehlen könnten?

rdegges
quelle

Antworten:

24

Zusätzlich zum Einrichten der Cache-Zeiten in gpg-agent.confmüssen Sie auch sicherstellen, dass GnuPG tatsächlich eine Schnittstelle zu GnuPG herstellt gpg-agent. GnuPG 2 und höher im Allgemeinen, der GnuPG 1-Zweig jedoch nicht. Standardmäßig verwendet git die gpgBinärdatei, die zum Zeitpunkt des Schreibens dieser Antwort noch GnuPG 1 ist, während GnuPG 2 wie gpg2auf den meisten Systemen installiert ist.

Am Ende haben Sie zwei Möglichkeiten:

Jens Erat
quelle
0

Zusätzlich zu der obigen Antwort können Sie auch einfach die Standardeinstellung gpgin Ihrem System auf gpg2anstatt ändern gpg1.

Wenn es git config --global gpg.program gpg2für Sie funktioniert, Sie das aber nicht in Ihrer Git-Konfiguration belassen möchten (in meinem Fall, weil ich dieselbe Konfiguration unter macOS verwende), können Sie einfach die Standardkonfiguration gpgaustauschen.

Ich folgte der Anleitung hier , die nur war:

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

Dies macht gpg1die alten gpgBinär- und Symlinks /usr/bin/gpg -> /usr/bin/gpg2(mit dem Namen gnupg und der Priorität 50).

Das Ändern des Standards gpgkönnte theoretisch einige Pakete auf Ihrem System beschädigen, aber Debian Stretch (die aktuelle stabile Version von Debian) wird aufgpg2gpg ähnliche Weise als Standard festgelegt , so dass Sie nicht zu viele Probleme haben sollten.

Gib
quelle