Die Verwendung von gpg in einer konsolenbasierten Umgebung wie z. B. ssh-Sitzungen schlägt fehl, da das Dialogfeld zur GTK-Eingabe in einer SSH-Sitzung nicht angezeigt werden kann.
Ich habe es versucht, unset DISPLAY
aber es hat nicht geholfen. Die GPG-Befehlszeilenoptionen enthalten keinen Schalter, um die Eingabe in den Konsolenmodus zu zwingen.
Ältere GPG-Versionen boten eine textbasierte Eingabeaufforderung, die in SSH-Sitzungen einwandfrei funktionierte, nach dem Upgrade jedoch fehlschlug.
Es gibt die --textmode
Befehlszeilenoption, aber anscheinend macht sie etwas anderes.
Was wäre die richtige und saubere Methode, um eine Klartext-PIN-Eingabe für Remote-Sitzungen zu erhalten?
DISPLAY="" gpg2 ...
hat mir geholfen, ich habe auch vorher pinentry-curses + pinentry-tty installiert, nicht sicher, ob sie unbedingt notwendig sindAntworten:
Um die Eingabe dauerhaft zu ändern, fügen Sie Folgendes an Ihre hinzu
~/.gnupg/gpg-agent.conf
:(Verwenden Sie in älteren Versionen, in denen es an Pinentry-Tty mangelt, Pinentry-Curses für ein 'Full-Terminal'-Dialogfeld.)
Weisen Sie den GPG-Agenten an, die Konfiguration neu zu laden:
quelle
gpg-agent
sollte sich das Vorhandensein oder Fehlen von erkennen$DISPLAY
und die entsprechende Pinentry wählen ...DISPLAY
Defined zu haben bedeutet aber nicht unbedingt, dass ich es verwenden kann oder möchte, zum Beispiel, wenn eine Verbindung über SSH besteht.su
sich der Besitz Ihres TTY nicht ändert, sodass Sie ihn manuell ändern müssenchown
. Siehe diesen Artikel .ls /usr/bin | grep pinentry
. Ich sehepinentry
,pinentry-curses
,pinentry-emacs
,pinentry-gnome3
,pinentry-gtk2
,pinentry-qt
undpinentry-tty
. Auf diese Weise können Sie diejenige auswählen, die besser zu Ihnen passt, wenn Sie keine Probleme haben$DISPLAY
.Ich hatte gerade dieses Problem unter Ubuntu 16.04.3, als ich versuchte, einen privaten Schlüssel mit gpg2 (2.1.11) auf einem Systemkonto ohne Kennwort und auf einem Benutzerkonto über ssh zu generieren / installieren. Nichts hat funktioniert
Ich fand dann diese , die für mich gearbeitet, so in Kürze:
quelle
Auf einer Debian-Box:
(und setze es auf pinentry-tty)
quelle
Unter Ubuntu 18.04 mit der Standardinstallation von gpg 2.2.4 habe ich
Ich konnte Folgendes tun, um eine textbasierte PIN-Eingabe zu erhalten:
quelle
Wenn Sie es nicht haben, installieren Sie es
pinentry-curses
mit yum oder apt-get.Dann renne:
sudo update-alternatives --config pinentry
Und wähle die Pinentry-Curses aus der Liste aus.
quelle
Ich werde meine Antwort von hier kopieren ...
Auf den ersten Blick
man pinentry-gnome3
sehe ich Folgendes:Leider funktioniert dieser Fallback im Textmodus bei mir nicht. Andere scheinen dasselbe Problem zu haben . Doch dieser Kommentar spornte meint ein anderes GUI Pin-Eingabeprogramm , um zu versuchen:
pinentry-gtk2
. Sie können wie folgt wechseln:Sobald ich gewechselt habe, hat es perfekt für mich funktioniert! In einem Terminal auf dem Desktop wird die GUI-Kennworteingabe verwendet, aber wenn ich in meinen Computer einsteige, wird eine Kennworteingabe im Textmodus verwendet.
quelle
Um das Pinentry-Popup zu verhindern, könnten Sie
ssh localhost
. Optionales Erzwingen von X11 deaktiviert,-x Disables X11 forwarding.
siehe das vollständige Beispiel unten.quelle
-x Disables X11 forwarding.
jede X11-Weiterleitung verhindern. Antwort wird aktualisiert.Ich fand das "vollständige Beispiel" in der Antwort von PvdL etwas verwirrend. Ich mache Folgendes:
quelle
Wenn Sie das tun
export GPG_TTY=$(tty)
undunset DISPLAY
es wird ein TLI Dialogfeld mit der Frage für das Passwort geben. Wenn Sie die richtige Passphrase eingeben, wird sie entschlüsselt.Wenn Sie den obigen Export von GPG_TTY NICHT ausführen und DISPLAY deaktivieren, wird erwartet, dass X Windows verwendet wird. Wenn Sie Ihre Sitzung (z. B. PuTTY) von einem MS-Windows-System mit aktivierter X11-Weiterleitung gestartet haben, möchten Sie das X-Window-Dialogfeld an Ihr MS-Windows-System senden. Sie können einen X-Emulator wie Exceed oder Cygwin / X unter Windows verwenden, damit die X-Window-Aufforderung zur Eingabe der Passphrase auf Ihrer MS-Windows-Box angezeigt wird.
Sie können jedoch die Notwendigkeit beseitigen, GPG_TTY festzulegen und DISPLAY zu deaktivieren und entweder die TLI oder die GUI abzurufen, indem Sie die Befehlszeile mit der
--batch
Option ausführen und die Passphrase mit der--passphrase
Option eingeben :Alle 3 Methoden haben heute bei mir auf RHEL6 mit gnupg2 funktioniert.
quelle
export GPG_TTY=$(tty)
ist ausreichend. Hast du das versucht? Haben Sie eine Referenz , die sagt , dassunset DISPLAY
ist auch notwendig? PS Leute mögen es nicht, Passphrasen in die Kommandozeile zu schreiben.