Jak działa agent GPG?


31

Mam linię w moim pliku gpg.conf który mówi use-agent.
Rozumiem, że odnosi się to do gpg-agent, który jest demonem. Strona podręcznika stwierdza: „gpg-agent to demon do zarządzania tajnymi (prywatnymi) kluczami niezależnie od dowolnego protokołu. Jest używany jako backend 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.

  1. Jak mogę sprawdzić, czy agent działa? Nie jestem nawet pewien, czy gpg-agent jest zainstalowany z podstawowym pakietem GPG 1.4.
  2. Jak mogę go uruchomić, jeśli nie działa?
  3. Jak mogę to zatrzymać, jeśli działa?

Odpowiedzi:


38

Gpg-agent to program działający w tle ( demon ) i przechowujący tajne klucze GPG w pamięci. Gdy proces GPG potrzebuje klucza, kontaktuje się z działającym programem gpg-agent przez gniazdo i żąda klucza. Jeśli proces agenta ma klucz, dostarcza go do gpg. Jeśli tak się nie stanie, spróbuje załadować zaszyfrowany klucz z twojego klucza i wyświetli monit o podanie hasła klucza. Gdy agent uzyska odszyfrowany klucz, przekazuje go do procesu gpg. Oprócz kluczy GPG agent Gpg może podobnie przechowywać klucze SSH i udostępniać je procesom SSH, takim jak ssh-agentprogram dostarczany z SSH.

Głównym celem korzystania z kluczowego agenta jest to, że nie musisz wpisywać hasła za każdym razem, gdy używasz swojego klucza. Agent przechowuje klucz w pamięci od czasu do czasu. Sam GPG nie może tego zrobić, ponieważ proces kończy się, gdy zakończy swoją pracę.

Inną rzeczą, którą może zrobić agent kluczowy, jest zezwolenie GPG działającej na zdalnym komputerze na uzyskanie kluczy w lokalnym agencie (który może załadować je z lokalnego pliku i poprosić o podanie hasła). Gpg-agent nie może tego jeszcze zrobić, jest to zaplanowana funkcja . SSH ma przekazywanie agentów od bardzo dawna. (Jest to powód, dla którego nie należy używać agenta gpg dla kluczy SSH).

GPG 1.x lub 2.0.x wie, że agent działa, ponieważ GPG_AGENT_INFOzmienna jest ustawiona. Ta zmienna zawiera lokalizację gniazda do komunikacji z agentem, a także identyfikator procesu agenta. GPG 2.1 zawsze umieszcza gniazdo agenta ~/.gnupg. GPG 2.x zawsze uruchamia proces agenta, jeśli nie jest uruchomiony.

Agenta można uruchomić po prostu przez uruchomienie gpg-agent. Jeśli chcesz zachować proces agenta jako część sesji, możesz zastąpić wywołanie menedżera sesji przez gpg-agent my-session-manager; niektóre dystrybucje konfigurują to automatycznie. GPG automatycznie uruchomi agenta, a GPG 2.1 dodatkowo znajdzie działającego agenta bez potrzeby używania 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 wysyłać polecenia agenta za pomocą gpg-connect-agentpolecenia powłoki. Wyślij killpolecenie, aby zabić proces agenta (lub wyślij mu sygnał).

Agent Gpg jest dostarczany z samym GPG. Niektóre dystrybucje pakują go osobno.


6
„Gdy proces GPG potrzebuje klucza, kontaktuje się z działającym programem gpg-agent przez gniazdo i żąda klucza. Jeśli proces agenta ma klucz, przekazuje go do gpg.” Nieco wprowadzające w błąd. Agent nie zapewnia klucza do procesu klienta. Zamiast tego wykonuje czynności przy użyciu klucza w imieniu klienta. (Klient zapewnia agentowi coś do podpisania, zaszyfrowania lub odszyfrowania, a agent to robi.) Podczas korzystania z agenta oprogramowanie klienckie SSH i GPG nigdy nie uzyskuje dostępu do rzeczywistego klucza.
Peter Samuelson

3
„Agent Gpg nie może tego jeszcze zrobić, jest to zaplanowana funkcja. SSH ma przekazywanie agentów od bardzo dawna. (Jest to powód, dla którego nie należy używać agenta gpg dla kluczy SSH.)” Niezupełnie prawda. gpg-agent działa dobrze z przekazywaniem agenta SSH. Używam tego codziennie. Klient SSH obsługuje przekazywanie, gpg-agent nie jest w to naprawdę zaangażowany. To, co nie jest obsługiwane, polega na tym, że sama GPG może rozmawiać zdalnie z agentem.
Peter Samuelson
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.