git - Hvordan installerer og bruger jeg gpg-agent på Windows?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at begynde at underskrive Git-forpligtelser. Jeg opsætter en GPG-nøgle med keybase.io og har den synkroniseret på min lokale maskine og på min Git-server. Nu forsøger jeg at løse problemet med at skrive nøgleadgangskoden på < em> hver enkelt commit .


PS> git commit -m "testing" --allow-empty

You need a passphrase to unlock the secret key for
user: "keybase.io/anthonymastrean <anthonymastrean@keybase.io>"
2048-bit RSA key, ID AD9184C0, created 2015-04-14 (main key ID 293FEB8B)

Enter passphrase:


Som jeg forstår det, har jeg brug for noget som gpg-agent installeret. Jeg er på Windows 10 Pro 1803, så jeg kigger på Gpg4win (anbefales af GitHub og andre). Jeg installerede det via Chocolatey, så jeg har den komplette standardinstallation. [9] [10]


Jeg kan dog ikke finde ud af, hvordan man får gpg-agent til at starte caching min adgangskode. Jeg bliver bedt om hver gang jeg begår.


Gpg-agenten siger, at den kører


PS> gpg-agent
gpg-agent[4644]: gpg-agent running and available


Jeg har denne gpg-connect-agent ting, men jeg ved ikke hvad jeg skal gøre med det.


PS> gpg-connect-agent.exe
> help
# NOP
# CANCEL
# OPTION
# BYE
# AUTH
# RESET
# END
# HELP
# GETEVENTCOUNTER
# ISTRUSTED <hexstring\_with\_fingerprint>
# HAVEKEY <hexstrings\_with\_keygrips>
# KEYINFO [--[ssh-]list] [--data] [--ssh-fpr] [--with-ssh] <keygrip>
# SIGKEY <hexstring\_with\_keygrip>
# SETKEY
# SETKEYDESC plus\_percent\_escaped\_string
# SETHASH (--hash=<name>)|(<algonumber>) <hexstring>
# PKSIGN [<options>] [<cache\_nonce>]
# PKDECRYPT [<options>]
# GENKEY [--no-protection] [--preset] [--inq-passwd]
# READKEY <hexstring\_with\_keygrip>
# GET\_PASSPHRASE [--data] [--check] [--no-ask] [--repeat[=N]]
# PRESET\_PASSPHRASE [--inquire] <string\_or\_keygrip> <timeout> [<hexstring>]
# CLEAR\_PASSPHRASE [--mode=normal] <cache\_id>
# GET\_CONFIRMATION <description>
# LISTTRUSTED
# MARKTRUSTED <hexstring\_with\_fingerprint> <flag> <display\_name>
# LEARN [--send] [--sendinfo] [--force]
# PASSWD [--cache-nonce=<c>] [--passwd-nonce=<s>] [--preset]
# INPUT
# OUTPUT
# SCD <commands to pass to the scdaemon>
# KEYWRAP\_KEY [--clear] <mode>
# IMPORT\_KEY [--unattended] [--force] [<cache\_nonce>]
# EXPORT\_KEY [--cache-nonce=<nonce>] [--openpgp] <hexstring\_with\_keygrip>
# DELETE\_KEY [--force|--stub-only] <hexstring\_with\_keygrip>
# GETVAL <key>
# PUTVAL <key> [<percent\_escaped\_value>]
# UPDATESTARTUPTTY
# KILLAGENT
# RELOADAGENT
# GETINFO <what>
# KEYTOCARD [--force] <hexstring\_with\_keygrip> <serialno> <id> <timestamp>
OK





Jeg ser mandens side taler om, hvordan man starter gpg-agenten i en Bash-session, men jeg er ikke sikker på, hvordan man oversætter den til Windows og får den til at fungere på tværs af cmd.exe og PowerShell.


https://linux.die.net/man/1/gpg-agent[11]

Bedste reference


Jeg havde brug for at informere git af det gpg-program, som jeg har installeret, som selv ved om gpg-agenten, som den skal bruge.


PS> git config --global gpg.program $(Resolve-Path (Get-Command gpg | Select-Object -Expand Source) | Select-Object -Expand Path)


Når du har indstillet denne konfiguration, dukker op 'Dialogboksen' -dialogen til Gpg4win!


Indtast billedbeskrivelse her [12]


Jeg kan muligvis savne noget for så vidt som automatisk starter gpg-agenten eller forstå sessionens livscyklus, men jeg kommer tilbage med flere detaljer.

Andre referencer 1



  1. Du kan bruge gpgconf --launch gpg-agent til at gøre gpg-agenten kørende i baggrunden på Windows.

  2. For at gøre gpg-agent automatisk kørende, når jeg logger ind, tilføjer jeg en opgave i Opgavestyring:



gpg-agent-autostart [13]



  1. For at udvide udløbet på adgangskoden tilføjes denne linje til gpg-agent.conf:


    default-cache-ttl 34560000
    
    max-cache-ttl 34560000
    



Jeg forsøgte at indstille nummeret til 999999999, men det fungerede slet ikke


Du kan finde placeringen af ​​gpg-agent.conf med denne kommando:


$ gpgconf.exe --list-dirs

sysconfdir:C\%3aProgramDataGNUetcgnupg
bindir:C\%3aProgram Files (x86)GnuPGin
libexecdir:C\%3aProgram Files (x86)GnuPGin
libdir:C\%3aProgram Files (x86)GnuPGlibgnupg
datadir:C\%3aProgram Files (x86)GnuPGsharegnupg
localedir:C\%3aProgram Files (x86)GnuPGsharelocale
socketdir:C\%3aUsersJerryAppDataRoaminggnupg
dirmngr-socket:C\%3aUsersJerryAppDataRoaminggnupgS.dirmngr
agent-ssh-socket:C\%3aUsersJerryAppDataRoaminggnupgS.gpg-agent.ssh
agent-extra-socket:C\%3aUsersJerryAppDataRoaminggnupgS.gpg-agent.extra
agent-browser-socket:C\%3aUsersJerryAppDataRoaminggnupgS.gpg-agent.browser
agent-socket:C\%3aUsersJerryAppDataRoaminggnupgS.gpg-agent
homedir:C\%3aUsersJerryAppDataRoaminggnupg


gpg-agent.conf er i homedir