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?
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:
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.
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:
gpgconf.exe --reload gpg-agent
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"
gpg-agent
.maximum-cache-ttl
opcja nie istnieje. Aby zobaczyć prawidłowe opcje, zobacz oficjalną dokumentację: gnupg.org/documentation/manuals/gnupg/…default-cache-ttl
jest to 600 sekund (10 minut), a nie dwie godziny.gpg-agent
, poprawna wartość wydaje się wynosić 10 minut dla wszystkich wydań. Zredagowałem odpowiedź, dziękuję za zwrócenie na to uwagi.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.conf
tam plik z dowolnymi wartościami.Możesz to sprawdzić, uruchamiając:
gpgconf.exe --reload gpg-agent
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"
źródło
Pamiętaj o przeładowaniu agenta gpg
gpg-connect-agent reloadagent /bye
po zmianie konfiguracji.źródło