Używanie gpg ze środowiska opartego na konsoli, takiego jak sesje ssh, kończy się niepowodzeniem, ponieważ okno dialogowe pinentry GTK nie może zostać wyświetlone w sesji SSH.
Próbowałem, unset DISPLAY
ale to nie pomogło. Opcje wiersza poleceń GPG nie zawierają przełącznika do wymuszania pinentry do trybu konsoli.
Starsze wersje GPG oferowały tekstowy monit, który działał dobrze w sesjach SSH, ale po aktualizacji po prostu się nie udaje.
Jest --textmode
przełącznik linii poleceń, ale najwyraźniej robi coś innego.
Jaki byłby właściwy i czysty sposób uzyskania zwykłego wpisu PIN dla sesji zdalnych?
DISPLAY="" gpg2 ...
pomógł mi, wcześniej zainstalowałem też przekleństwa pinentry + pintyry-tty, nie jestem pewien, czy są one absolutnie konieczneOdpowiedzi:
Aby trwale zmienić pinentry, dołącz następujące elementy do
~/.gnupg/gpg-agent.conf
:(W starszych wersjach, które nie posiadają pinty-tty, użyj przekleństw pinentry w oknie dialogowym „pełnego terminala”).
Poinformuj agenta GPG o ponownym załadowaniu konfiguracji:
źródło
gpg-agent
powinien sam wykryć obecność lub brak$DISPLAY
i wybrać odpowiednią pinentry ...DISPLAY
zdefiniowanie nie musi oznaczać, że mogę lub chcę z niego korzystać, na przykład w przypadku połączenia przez SSH.su
że nie zmienia to własności twojego TTY, więc musisz to zrobić ręczniechown
. Zobacz ten artykuł .ls /usr/bin | grep pinentry
. Widzępinentry
,pinentry-curses
,pinentry-emacs
,pinentry-gnome3
,pinentry-gtk2
,pinentry-qt
ipinentry-tty
. W ten sposób możesz wybrać ten, który najbardziej Ci odpowiada, jeśli nie masz$DISPLAY
problemu.Właśnie miałem ten problem na Ubuntu 16.04.3, gdy próbowałem wygenerować / zainstalować klucz prywatny za pomocą gpg2 (2.1.11) na koncie systemowym bez hasła i na koncie użytkownika przez ssh. Nic nie działało, dając:
Potem znalazłem to, co działało dla mnie, więc w skrócie:
źródło
W pudełku Debiana:
(i ustaw na pinty-tty)
źródło
Na Ubuntu 18.04, z domyślną instalacją gpg 2.2.4, mam
Udało mi się wykonać następujące czynności, aby wprowadzić tekstowy kod PIN:
źródło
Jeśli go nie masz, zainstaluj
pinentry-curses
z yum lub apt-get.Następnie uruchomić:
sudo update-alternatives --config pinentry
I wybierz z listy przekleństwa pinentry.
źródło
Skopiuję stąd swoją odpowiedź ...
Patrząc na to
man pinentry-gnome3
, widzę to:Niestety ten tryb zastępczy w trybie tekstowym nie działa dla mnie. Wygląda na to, że inni mają ten sam problem . Jednak ten komentarz zachęciły Moje strony aby spróbować innego GUI programu pin wjazdu:
pinentry-gtk2
. Możesz zmienić w następujący sposób:Po przełączeniu działało to dla mnie idealnie! W terminalu na pulpicie użyje hasła GUI, ale kiedy ssh do mojego komputera, użyje hasła w trybie tekstowym.
źródło
Aby zapobiec wyskakującym okienku pinentry, możesz
ssh localhost
. Opcjonalnie wymuszenie wyłączenia X11,-x Disables X11 forwarding.
Zobacz pełny przykład poniżej.źródło
-x Disables X11 forwarding.
powinien uniemożliwić jakiekolwiek przekazywanie X11. Odpowiedź została zaktualizowana.Uważam, że „pełny przykład” w odpowiedzi PvdL jest nieco mylący, oto co robię:
źródło
Jeśli tak
export GPG_TTY=$(tty)
iunset DISPLAY
to daje się okno dialogowe z prośbą o TLI hasłem. Wpisanie poprawnego hasła powoduje jego odszyfrowanie.Jeśli NIE wykonasz powyższego eksportu GPG_TTY i nie wyłączysz DISPLAY, spodziewa się, że użyje X Windows. Jeśli sesja została uruchomiona (na przykład PuTTY) z systemu MS-Windows z włączonym przekazywaniem X11, chce wysłać okno dialogowe X-Window do systemu MS Windows. Możesz użyć emulatora X, takiego jak Exceed lub Cygwin / X w systemie Windows, aby zezwolić X-Window na pojawienie się hasła w oknie MS-Windows.
Można jednak wyeliminować potrzebę ustawiania GPG_TTY i rozbrojenia WYŚWIETLACZA oraz uzyskania TLI lub GUI, uruchamiając wiersz poleceń z
--batch
opcją i wstawiając hasło z--passphrase
opcją:Wszystkie 3 metody działały dzisiaj dla mnie na RHEL6 z uruchomionym gnupg2.
źródło
export GPG_TTY=$(tty)
jest wystarczająca. Próbowałeś tego? Czy masz referencje, które mówią, żeunset DISPLAY
jest to również konieczne? PS Ludzie nie lubią umieszczać haseł w wierszu poleceń.