W moim pliku gpg.conf znajduje się wiersz z napisem use-agent
.
Rozumiem, że dotyczy do gpg-agent, który jest demonem. Strona podręcznika mówi: „gpg-agent to demon do zarządzania tajnymi (prywatnymi) kluczami niezależnie od protokołu. Jest używany jako zaplecze dla gpg i gpgsm, a także dla kilku innych narzędzi.”
Czy ktoś może wyjaśnić, co to oznacza w kontekście gpg? Jaki jest sens gpg-agent?
Obecnie mam GPG 1.4.
- Jak mogę sprawdzić, czy agent działa? Właściwie nie jestem nawet pewien, czy gpg-agent jest zainstalowany z podstawowym pakietem GPG 1.4.
- Jak mogę go uruchomić, jeśli nie jest uruchomiony?
- Jak mogę zatrzymać, jeśli jest uruchomiony?
Odpowiedź
Gpg-agent to program działający w tle (demona ) i przechowuje tajne klucze GPG w pamięci. Gdy proces GPG potrzebuje klucza, kontaktuje się z uruchomionym programem gpg-agent za pośrednictwem gniazdo i żąda klucza. Jeśli proces agenta ma klucz, przekazuje go do gpg. Jeśli nie, próbuje załadować zaszyfrowany klucz z Twojej bazy kluczy i wyświetla monit o podanie hasła klucza. Gdy agent uzyska odszyfrowany klucz, przekazuje go do procesu gpg. Oprócz kluczy GPG, Gpg-agent może podobnie przechowywać klucze SSH i udostępniać je procesom SSH, takim jak ssh-agent
program dostarczany z SSH.
Głównym celem korzystania z agenta kluczowego jest nie musisz wpisywać hasła za każdym razem, gdy używasz klucza. Agent przechowuje klucz w pamięci od jednego razu do drugiego. Sam GPG nie może tego zrobić, ponieważ proces kończy się po wykonaniu swojej pracy.
Inną rzeczą, którą może zrobić kluczowy agent, jest zezwolenie GPG działającemu na zdalnej maszynie, aby uzyskać klucze w lokalnym agencie ( który może załadować je z lokalnego pliku i poprosić o podanie hasła). Gpg-agent nie może jeszcze tego zrobić, jest to planowana funkcja . SSH obsługiwał przekazywanie agentów przez bardzo długi czas. (To jest powód, aby nie użyj gpg-agent dla kluczy SSH.)
GPG 1.x lub 2.0.x wie, że agent jest uruchomiony, ponieważ ustawiono zmienną GPG_AGENT_INFO
. Ta zmienna zawiera lokalizację gniazda do komunikacji z agentem, a także identyfikator procesu agenta. GPG 2.1 zawsze umieszcza gniazdo agenta w ~/.gnupg
. GPG 2.x zawsze uruchamia agenta proces, jeśli któryś z nich nie jest uruchomiony.
Możesz uruchomić agenta, po prostu uruchamiając gpg-agent
. Jeśli chcesz, aby proces agenta był częścią sesji, możesz zastąpić wywołanie menedżera sesji przez gpg-agent my-session-manager
; niektóre dystrybucje ustawiają to automatycznie. GPG automatycznie uruchomi agenta, a GPG 2.1 dodatkowo znajdzie działającego agenta bez konieczności posiadania zmiennej środowiskowej, więc nie musisz go uruchamiać w ten sposób, chyba że używasz starszej wersji GPG lub używasz agenta do przechowywania innych typów kluczy, takich jak SSH.
Możesz wysłać agentowi polecenia za pomocą gpg-connect-agent
polecenie powłoki. Wyślij polecenie kill
do zabij proces agenta (lub wyślij mu sygnał).
Gpg-agent jest dostarczany z samym GPG. Niektóre dystrybucje pakują go osobno.
Komentarze
- " Gdy proces GPG potrzebuje klucza, kontaktuje się z uruchomionym programem gpg-agent przez gniazdo i żąda klucza. Jeśli proces agenta ma klucz, dostarcza go do gpg. " Nieco mylące. Agent nie dostarcza klucza do procesu klienta. Zamiast tego działania orms przy użyciu klucza, w imieniu procesu klienta. (Klient zapewnia agentowi coś do podpisania, zaszyfrowania lub odszyfrowania, a agent robi to). Podczas korzystania z agenta oprogramowanie klienta SSH i GPG nigdy nie uzyskuje dostępu do rzeczywistego klucza.
- " Gpg-agent może ' jeszcze tego nie robić, jest to planowana funkcja. SSH ma agentów spedycyjnych od bardzo dawna. (To jest powód, aby nie używać gpg-agent dla kluczy SSH). " Niezupełnie prawda. gpg-agent działa dobrze z przekazywaniem agentów SSH. Używam tego codziennie. Klient SSH obsługuje przekazywanie, gpg-agent tak naprawdę nie jest w to zaangażowany. To, co nie jest obsługiwane, to zdalna rozmowa z agentem przez GPG sam .