Czy mogę wprowadzić hasło gpg tylko raz i odblokować wszystkie moje klucze podrzędne (podpisywanie, deszyfrowanie, uwierzytelnianie)?
W tej chwili muszę trzy razy wpisać hasło gpg (w celu podpisania, odszyfrowania, uwierzytelnienia). Jest to niewygodne.
Próbowałem wymyślić skrypt powłoki.
#!/bin/bash
set -x
set -e
set +o history
signing_key=77BB3C48
encryption_key=CE998547
tempfile="$(mktemp)"
echo "test" > testfile
unset passphrase || exit 1
read -sp 'Enter password. ' passphrase ; echo
exec 3<<<"$passphrase"
gpg2 --no-tty --use-agent --batch --yes --passphrase-fd 3 --sign-with "$signing_key" --clearsign "$tempfile"
gpg2 --no-tty --use-agent --verify "$tempfile.asc"
gpg2 --no-tty --use-agent --yes --armor --recipient "$encryption_key" --encrypt "$tempfile"
exec 3<<<"$passphrase"
gpg2 --no-tty --use-agent --batch --decrypt --passphrase-fd 3 "$tempfile.asc"
Ale niestety w ten sposób hasła gnupg-agent nie buforują hasła. Czy można to naprawić?
Informacje o systemie:
- Kiedy nie używam tego skryptu powłoki, nie mam problemów z gnupg-agent. Kiedy ręcznie podpisuję / odszyfrowuję plik w powłoce, pinentry pyta o hasło dwukrotnie, a następnie buforuje je do ponownego uruchomienia.
- Korzystanie z Debian Wheezy.
- wersja gpg:
dpkg -l | grep gnupg
ii gnupg 1.4.12-7+deb7u3 i386 GNU privacy guard - a free PGP replacement
ii gnupg-agent 2.0.22-3 i386 GNU privacy guard - password agent
ii gnupg-curl 1.4.12-7+deb7u3 i386 GNU privacy guard - a free PGP replacement (cURL)
ii gnupg2 2.0.22-3 i386 GNU privacy guard - a free PGP replacement (new v2.x)
Ja zapytałem na GnuPG listy dyskusyjnej użytkowników jakiś czas temu, ale nie ma odpowiedzi.
Być może ta odpowiedź zadziała? Być może gpg-connect-agent
jest to wymagane?
shell-script
gpg
gpg-agent
adrelanos
źródło
źródło
exec 3<<<"$passphrase"
był nowy nawet dla mnie ... I właśnie rzuciłem nagrodę w wysokości 250 powtórzeń za odpowiedź, którą zacytowałeś.Odpowiedzi:
Istnieje gnome-keyring-daemon i konik morski, dzięki czemu zarządzanie kluczami i hasłami jest bardzo łatwe.
Zasadniczo, jeśli używasz gnome-keyring-daemon jako agent gpg, ma on możliwość automatycznego odblokowania twoich kluczy GPG. Robi to, utrzymując brelok do hasła, który zawiera hasła do stron internetowych, kluczy GPG, kluczy SSH itp. Ten brelok do hasła jest następnie zabezpieczany własnym hasłem. Odblokowujesz go, a breloczek do gnomów odblokuje wszystko inne.
Jako dodatkowy bonus gnome-keyring-daemon ma brelok „login”, który jeśli hasło pasuje do hasła użytkownika, brelok jest automatycznie odblokowywany po zalogowaniu.
Konfiguracja
Jak to działa? Wystarczy zainstalować gnome-keyring-daemon i konika morskiego. Pakiet powinien wykonać całą konfigurację systemu. Tylko upewnij się, że nie uruchamiasz innego demona kluczy lub agenta GPG . Cokolwiek zaczyna się od ostatniego „wygrywa”, a breloczek do gnome zaczyna się na stosie PAM, tak bardzo wcześnie.
Jeśli twoje klucze GPG są zapisane
~/.gnupg
, automatycznie je odbierze i będzie działać jako agent GPG. To samo dotyczy kluczy SSH przechowywanych w~/.ssh
Przy pierwszej próbie użycia klucza prywatnego pojawi się okno dialogowe wyglądające tak: (Uruchomiłem go za pomocą prostej linii poleceń
gpg -d myfile.gpg
).Po prostu wybierz opcję „Automatycznie odblokuj ten brelok za każdym razem, gdy jestem zalogowany”
Teraz tak naprawdę nie rozmawialiśmy o koniku morskim. To dlatego, że nie jest to absolutnie konieczne. Wszystko to zostało zrobione przy pomocy zwykłego demona gnome-keyring. Jednak za pomocą konika morskiego możesz przeglądać i zarządzać wszystkimi swoimi kluczami i brelokami. A jeśli używasz scentralizowanego uwierzytelniania (LDAP), musisz go użyć podczas zmiany hasła logowania, aby również zmienić hasło w kluczu „login”, aby je dopasować.
Inne hasła
Jak wspomniano wcześniej, gnome-keyring-daemon może również przechowywać hasła do stron internetowych. Ostatnio sprawdziłem, że chrome obsługuje to, ale Firefox nie. Jest jednak jedna sztuczka, aby go uruchomić.
Domyślnie będziesz mieć 2 breloki, brelok „login” i „domyślny” brelok. „Domyślny” brelok jest domyślny (stąd nazwa). Ale to osobny brelok, więc nie zostanie automatycznie odblokowany. W koniku morskim, po kliknięciu prawym przyciskiem myszy klucza „login”, istnieje możliwość „ustawienia domyślnego”. Wybierz to, a zacznie się przyzwyczajać do haseł. Ja osobiście po prostu usuwam „domyślny” i używam „login” do wszystkiego.
źródło
sudo apt-get remove gnupg-agent
isudo apt-get install gnome-keyring seahorse
. Następnie utworzył plik/etc/X11/Xsession.d/999gnomekeyring
o następującej treści.eval $(/usr/bin/gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh) export GNOME_KEYRING_CONTROL GNOME_KEYRING_PID GPG_AGENT_INFO SSH_AUTH_SOCK
(W przeciwnym razie gnome-keyring nie uruchomiłby się nawet w KDE.) Teraz, kiedy uruchomięgpg -d myfile.gpg
, zostaniesz poproszony o hasło i zostanie ono zapisane w pamięci podręcznej, ale nigdy nie pojawiło się to okno dialogowe./etc/X11/Xsession.d
. Należy to zrobić na stosie PAM. Powinieneś miećsession optional pam_gnome_keyring.so auto_start
wpis w co najmniej jednym pliku/etc/pam.d
. Niestety nie używam Debiana, więc nie wiem, który z nich. Jeśli tego nie ma, to jest problem./etc/X11/Xsession.d
,ps aux | grep gnome
pokazuje, że gnome-keyring-daemon nie zacząć. (Niemniej jednak usunąłem.)/usr/share/doc/libpam-gnome-keyring/README.Debian
MówiIf you want to start gnome_keyring from another display manager, you need to add the following lines to the corresponding /etc/pam.d/?dm file: auth optional pam_gnome_keyring.so session optional pam_gnome_keyring.so auto_start
(nowe wiersze usunięte przez komentarze). Czy to, dodane do/etc/pam.d/kdm
, zrestartowało KDM. Brak ładowania agenta, brak dostępnych.kdm
i wkładasz to/etc/pam.d/kdm
, powinno to zrobić. Jedyne, co mogę zasugerować, jeśli nadal chcesz podążać tą trasą, to przekopać dzienniki. Przepraszam za fałszywą nadzieję, pomyślałem, że byłoby to dla ciebie proste rozwiązanie.Przeprowadziłem pewne dochodzenie, a wynik jest dla mnie zaskakujący, ale prosty:
Wywołany w ten sposób
gpg
nie komunikuje sięgpg-agent
w ogóle !gpg
jest w stanie samodzielnie wykonać wszystkie te operacje.Ale jeśli
gpg-agent
nawet nie wie, że coś się stało, to z trudem zna hasło, którego wcześniej nie znał.źródło
Can I enter my gpg password just once and unlock all my sub keys (signing, decryption, authentication)?
) Mam nadzieję, że przesłanie hasła dogpg-agent
lubgpg-connect-agent
będzie w jakiś sposób możliwe.