it-swarm.com.de

So machen Sie gpg Eingabeaufforderung für die Passphrase auf der CLI

Das Verschlüsselungstool des gnuPG-Pakets gpg fordert bei Verwendung eines GUI-Dialogfelds zur Eingabe der Passphrase auf, wenn es von einem normalen Benutzer aufgerufen wird. Wenn es jedoch von root aufgerufen wird, fordert es die Befehlszeilenschnittstelle auf. Wie kann er die CLI verwenden, auch wenn er von einem normalen Benutzer aufgerufen wird. Version: GnuPG 1.4.12 

23
Mayank Pundir

Diese Art der Kennwortabfrage wird nicht von gpg selbst ausgeführt, sondern vom gpg-Agenten.

Sie können Ihren GPG-Agenten konfigurieren, welches Pinentry-Programm verwendet werden soll. Es gibt Optionen sowohl beim Starten des Agenten als auch in der gpg-agent-Konfigurationsdatei. Bitte werfen Sie einen Blick auf die Manpage.

Ich sehe also zwei Möglichkeiten:

  • Konfigurieren Sie Ihren GPG-Agenten so, dass er die gewünschte Methode verwendet
  • Deaktivieren Sie den GPG-Agenten. Sie können dies für einen einzelnen GPG-Aufruf tun, indem Sie die Umgebungsvariable GPG_AGENT_INFO wie GPG_AGENT_INFO="" gpg ... deaktivieren. gpg hatte früher eine --no-use-agent-Option, diese wurde jedoch als veraltet markiert und hat in der aktuellen gpg-Version keine Funktionalität.
12
Skyr

In neueren Versionen von gpg,> = 2.x, können Sie dies verwenden

stty -echo; gpg --passphrase-fd 0 --pinentry-mode loopback --decrypt filename; stty echo

Das stty stellt sicher, dass Ihr Passwort bei der Eingabe nicht wiederholt wird. Ein bisschen flüssiger als mit Konfigurationen zu fummeln, wenn Sie nur schnell eine Desktop-Workstation auswählen möchten, in die Sie sich einarbeiten möchten.

Sie benötigen jedoch eine Eingabe Sudo apt install pinentry-curses oder möglicherweise Sudo apt install pinentry

Es ist weit entfernt von den alten Tagen von gpg 1.x, als du nur --no-use-agent.

2
nink

Ich verwende ein neueres GPG (2.2.13) und die Manpage gpg-agent Lautet:

Sie sollten Ihrem .bashrc Oder jeder anderen Initialisierungsdatei, die für alle Shell-Aufrufe verwendet wird, immer die folgenden Zeilen hinzufügen:

GPG_TTY=$(tty)
export GPG_TTY

Es ist wichtig, dass diese Umgebungsvariable immer die Ausgabe des Befehls tty widerspiegelt. ...

Dies erklärt nicht das "Warum" (ich verstehe auch nicht das "Warum"), aber die Einstellung in meinem .bashrc Hat funktioniert: Mein gpg-agent Fragte nach meiner Passphrase über die Schnittstelle pinentry-curses. Ich musste keine andere Konfiguration vornehmen (ich habe nicht einmal eine ~/.gnupg/gpg-agent.conf - Datei).

Edit: Dies scheint immer dann zu funktionieren, wenn kein DISPLAY verfügbar ist, z. in einer SSH-Sitzung ohne X11-Weiterleitung. Aber wenn ich auf dem Desktop bin und DISPLAY eingestellt ist, wird trotzdem der GUI-Dialog angezeigt. unset DISPLAY (BASH) verwendet in diesem Fall Flüche anstelle der GUI.

1
villapx

In einer Debian-Box:

Sudo apt install pinentry-tty
Sudo update-alternatives --config pinentry

(und setze es auf pinentry-tty)

Sie können die folgende Umgebungsvariable festlegen, um die grafische Aufforderung zu deaktivieren

export PINENTRY_USER_DATA="USE_CURSES=1"
0
johipsum