gpg2 auf dem Mac: Wie gebe ich die Passphrase im Terminal ein, ohne eine GUI-Eingabeaufforderung zu erhalten?

gpg2 auf dem Mac: Wie gebe ich die Passphrase im Terminal ein, ohne eine GUI-Eingabeaufforderung zu erhalten?

Ich verwende Mountain Lion und wenn ich eine Datei mit GPG verschlüssele, fordert mich eine nervige GUI auf, die Passphrase einzugeben. Ich möchte im Terminal nach der Passphrase gefragt werden, nicht in einer externen GUI. Ich mache das zum Beispiel möglicherweise remote.

Gibt es eine Möglichkeit, GPG für Mac dazu zu bringen, im Terminal nach der Passphrase zu fragen, aber nicht in einer GUI-Eingabeaufforderung?


AKTUALISIEREN:Das scheint mit gpg2 sehr schwierig zu sein, also habe ich auf gpg1 heruntergestuft. Habe alles mit gpg2 (MacGPG2) probiert und nichts hat funktioniert. Mist! Mit gpg1 funktioniert es einwandfrei!

Antwort1

Im Folgenden wird davon ausgegangen, dass Sie gnupg2 mit Macports verwenden und nicht MacGPG2, aber der Fix trifft wahrscheinlich auf Ihren Anwendungsfall zu.

Installieren Sie das Paket „Pinentry“ von Macports:

port -v install pinentry

Bearbeiten Sie Ihre ~/.gnupg/gpg-agent.conf entsprechend:

pinentry-program /opt/local/bin/pinentry-curses

Entfernen oder kommentieren Sie den vorhandenen Eintrag „pinentry-program“. Laden Sie Ihr Terminal neu oder verwenden Sie Folgendes:

echo RELOADAGENT | gpg-connect-agent

Fertig. Sie sollten jetzt Pinentry/Passphrase im Terminal haben (Curses-Dialog). Wenn Sie das alte GPG v1.x-Verhalten von Inline-TTL-Pinentry beibehalten möchten, können Sie möglicherweise einen benutzerdefinierten Befehl „./configure“ mit dem Macports-Pinentry-Paket verwenden.

Wenn Sie zuvor MacGPG2/GPG-Tools für Mac installiert haben, müssen Sie möglicherweise den Prozess „shutdown-gpg-agent“ beenden, bevor der Pinentry-Dialog funktioniert (oder einfach einen Neustart durchführen).

user$ ps ax |grep shutdown-gpg-agent
 1854   ??  S      0:00.01 /bin/bash /usr/local/MacGPG2/libexec/shutdown-gpg-agent

user$ kill -KILL 1854

Antwort2

Ob Sie über eine Verbindung kommen, können Sie sshdurch Prüfen der Umgebungsvariable feststellen SSH_CONNECTION.

export GPG_TTY=$(tty)
if [[ -n "$SSH_CONNECTION" ]] ;then
    export PINENTRY_USER_DATA="USE_CURSES=1"
fi

Ich verwende Kontrollen um zu sehen, ob ich über- sshoder unterschreite tmux. Dazu verwende ich die folgende Kontrolle:

export GPG_TTY=$(tty)
if [[ -n "$SSH_CONNECTION" || -n "$TMUX" ]] ;then
    export PINENTRY_USER_DATA="USE_CURSES=1"
fi

Quelle

Antwort3

Drei Worte: Kompilieren Sie es selbst. Ja, das können Sie! Vergessen Sie aber nicht, vorher die Datei gpg-agent.conf zu löschen!

Antwort4

Ich habe gerade die Kompilierung von GnuPG (Version 2.2.9) und aller Abhängigkeiten für Mac OS High Sierra abgeschlossen. Es war ziemlich interessant. Nachdem ich ein kleines Problem mit den Tests von libgcrypt gelöst hatte (mit ein wenig Hilfe des entsprechenden Rezeptes von Homebrew), funktionierte alles im Grunde sofort.

Beim Versuch, meinen privaten Schlüssel zu importieren, gelang es mir nicht, da im System ein Pinentry-Programm fehlte. Nach einer kurzen Suche landete ich auf dieser Seite, die jedoch nicht sehr hilfreich war, sodass ich mich einfach dazu entschloss, das Pinentry selbst zu erstellen.

Aufgrund meiner Erfahrung mit GnuPG auf Linux-Rechnern wusste ich bereits, dass ich mein Passwort gerne in einer normalen Eingabeaufforderung auf der Befehlszeile eingeben würde, ohne diese lästigen, störenden Dialogfelder. Und deshalb teile ich den Vorgang hier. Er ist einfach, könnte aber jemandem mit einem ähnlichen Problem helfen.

Beginnen Sie damit, den Quellcode von pinentry von GnuPG herunterzuladen.Webseite. Zum Zeitpunkt des Schreibens war der Link zum Herunterladen der Quellehttps://gnupg.org/ftp/gcrypt/pinentry/pinentry-1.1.0.tar.bz2Laden Sie auch dieUnterschriftund überprüfen Sie die Authentizität mit gpg selbst.

Überspringen Sie die Überprüfung nicht,das ist wichtig! Dieses Programm hat Zugriff auf alle Ihre GPG-Passwörter und privaten Schlüssel. Sie sollten sich vergewissern, dass es das ist, was es vorgibt zu sein! Wenn Sie Probleme haben, stellen Sie sicher, dass Sie die Schlüssel von den GnuPG-Betreuern importiert haben (sieheHier):

$ gpg --verify pinentry-1.1.0.tar.bz2.sig pinentry-1.1.0.tar.bz2

Nachdem Sie nun sicher sind, dass Sie mit authentischen Quelldateien arbeiten, extrahieren Sie den Quellcode und geben Sie cdin dieses Verzeichnis Folgendes ein:

$ tar xvf pinentry-1.1.0.tar.bz2
$ cd pinentry-1.1.0

Die Zusammenstellung ist sehr einfach:

$ ./configure --enable-pinentry-tty
$ make
$ sudo make install

Möglicherweise configurewird über fehlende Abhängigkeiten berichtet. In diesem Fall lesen Sie einfach den Fehler und laden die Abhängigkeit von der GnuPG-Webseite herunter (überprüfen Sie dabei immer die Integrität des Downloads!).

Der wichtige Teil der obigen Befehle ist das Flag --enable-pinentry-tty. Pinentry TTY ist die einfachste Möglichkeit, Ihr Passwort in einer sehr normalen und langweiligen Eingabeaufforderung auf der Befehlszeile einzugeben. Genau das, was ich wollte! Wenn ich mich nicht irre, curseswird die Version trotzdem erstellt. Obwohl es eine CLI-Option ist, finde ich sie genauso störend wie alle anderen.

Sobald es installiert ist, werden Sie einige neue Binärdateien in sehen /usr/local/bin. Stellen Sie sicher, dass Sie eine aufgerufen haben pinentry-tty(wenn nicht, ist etwas schiefgelaufen ...).

Um diese neue Binärdatei zu Ihrer Standardmethode zum Eingeben des GPG-Passworts zu machen, fügen Sie die folgende Zeile hinzu ~/.gnupg/gpg-agent.conf(erstellen Sie die Datei und das Verzeichnis, falls sie noch nicht vorhanden sind):

pinentry-program /usr/local/bin/pinentry-tty

Wenn Sie es sofort versuchen, wird es wahrscheinlich nicht funktionieren, da Sie höchstwahrscheinlich noch einen GPG-Agenten mit der alten Konfiguration laufen haben. Beenden Sie alle GPG-Agenten und erstellen Sie einen neuen:

$ sudo killall gpg-agent
$ gpg-agent --daemon

Das ist es! Viel Spaß mit der altmodischen TTY-Pineingabe :)

verwandte Informationen