Przechowuj w pamięci podręcznej poświadczenia GnuPG przez całą sesję użytkownika

52

GnuPG może przy pomocy gpg-agentbuforowania dostępu do klucza prywatnego. Jak mogę zachować tę pamięć podręczną przez całą sesję użytkownika ?

Kiedy odblokuję klucz gpg-agent, pozostaje on w pamięci podręcznej tylko przez ograniczony czas. Z agentem SSH wpisuję hasło raz i pozostaje ono buforowane przez całą sesję. Chcę tego samego zachowania gpg-agent.

Tak więc ssh-agentnie cierpi z powodu ograniczonej żywotności pamięci podręcznej. Ale gpg-agentogranicza żywotność pamięci podręcznej, przynajmniej domyślnie. W jaki sposób można wyeliminować limit czasu pamięci podręcznej z gpg-agent?

duży nos
źródło

Odpowiedzi:

66

Do GnuPG 2

Konfiguracja użytkownika (in ~/.gnupg/gpg-agent.conf) może określać tylko domyślny i maksymalny czas buforowania; nie można tego wyłączyć.

default-cache-ttlOpcja ustawia limit czasu (w sekundach) po ostatniej aktywności GnuPG (tak resetuje jeśli go używać), przy czym maximum-cache-ttlopcja ustawić żądany przedział czasu (w sekundach) buforuje po wprowadzeniu hasła. Wartość domyślna to 600 sekund (10 minut) default-cache-ttli 7200 sekund (2 godziny) dla maximum-cache-ttl.

Ustaw na około rok - powiedzmy 34560000 sekund (400 dni) - i powinieneś być w porządku:

default-cache-ttl 34560000
maximum-cache-ttl 34560000

Ale aby ta zmiana zaczęła obowiązywać, musisz zakończyć sesję poprzez zrestartowanie gpg-agent.

Jeśli chcesz ograniczyć długość sesji, musisz zabić demona podczas wylogowywania. To bardzo różni się w zależności od systemu operacyjnego, więc odnoszę się do innego pytania / odpowiedzi zawierającego wskazówki dla różnych systemów .

Możesz także zrestartować gpg-agentpodczas logowania, ale nie ogranicza to czasu buforowania do długości sesji, ale logowania użytkownika. Zdecyduj sam, czy jest to problem w twoim przypadku.

GnuPG 2.1 i nowsze

W GnuPG 2.1 i nowszych maximum-cache-ttlzmieniono nazwę opcji max-cache-ttlbez dalszych zmian.

Jens Erat
źródło
Czy to odpowiedź „nie możesz zrobić, o co prosisz”? Nie jest to jasne, ponieważ mówisz o ograniczeniu długości sesji lub ograniczeniu czasu buforowania. Chcę dokładnie przeciwnie: bez arbitralnego ograniczenia czasu pamięci podręcznej lub długości sesji.
bignose
W pewnym sensie można to obejść tylko przez ustawienie dość dużego ttl. Ustaw na mniej więcej rok i wszystko powinno być w porządku - ale musisz zakończyć sesję, uruchamiając ją ponownie gpg-agent.
Jens Erat,
Pamiętaj, że w najnowszych wersjach (przynajmniej gnupg 2.1) maximum-cache-ttlopcja nie istnieje. Aby zobaczyć prawidłowe opcje, zobacz oficjalną dokumentację: gnupg.org/documentation/manuals/gnupg/…
Pablo Olmos de Aguilera C.
3
Przynajmniej w GnuPG 2.1 domyślnie default-cache-ttljest to 600 sekund (10 minut), a nie dwie godziny.
jlh
@jlh Patrząc na strony podręcznika dla różnych wersji gpg-agent, poprawna wartość wydaje się wynosić 10 minut dla wszystkich wydań. Zredagowałem odpowiedź, dziękuję za zwrócenie na to uwagi.
Jens Erat,
5

Dla Windowsa

Plik do edycji należy umieścić w: $env:AppData\gnupg

Jeśli uruchomisz to w oknie PowerShell, otworzy się: C:\Users\<UserName>\AppData\Roaming\gnupg

Po prostu umieść gpg-agent.conftam plik z dowolnymi wartościami.

Możesz to sprawdzić, uruchamiając:

  1. gpgconf.exe --reload gpg-agent
  2. gpgconf.exe --list-options gpg-agent

Możesz również użyć tej jednej wkładki: Set-Content -Path $env:AppData\gnupg\gpg-agent.conf -Value "default-cache-ttl 86400$([System.Environment]::NewLine)max-cache-ttl 86400"

CubanX
źródło
Jeśli druga odpowiedź tutaj nie jest odpowiednia, możemy przenieść ją do własnego pytania, oznaczonego Windows. Nie jestem pewien, co jest właściwe :)
CubanX
Dzięki i trzymaj to tutaj - dobrze mieć wszystkie informacje w jednym miejscu. 👍
Barfuin
5

Pamiętaj o przeładowaniu agenta gpg gpg-connect-agent reloadagent /byepo zmianie konfiguracji.

SuperSandro2000
źródło