Alle gpg-Unterschlüsselkennwörter gleichzeitig zwischenspeichern? Vermeiden Sie die Eingabe mehrerer gpg-Passwörter?

10

Kann ich mein GPG-Passwort nur einmal eingeben und alle meine Unterschlüssel entsperren (Signieren, Entschlüsseln, Authentifizieren)?

Im Moment muss ich mein GPG-Passwort dreimal eingeben (zum Signieren, Entschlüsseln, zur Authentifizierung). Dies ist unpraktisch.

Ich habe versucht, ein Shell-Skript zu entwickeln.

#!/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"

Leider speichert das Passwort von gnupg-agent das Passwort nicht zwischen. Kann das behoben werden?

System Information:

  • Wenn ich dieses Shell-Skript nicht verwende, habe ich keine Probleme mit gnupg-agent. Wenn ich eine Datei in der Shell manuell signiere / entschlüssele, fragt pinentry zweimal nach dem Kennwort und speichert es dann bis zum Neustart zwischen.
  • Verwenden von Debian Wheezy.
  • GPG-Version:

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)

Ich habe vor einiger Zeit auf der Mailingliste von gnupg-users gefragt , aber keine Antwort.

Vielleicht würde diese Antwort funktionieren? Vielleicht gpg-connect-agentist erforderlich?

adrelanos
quelle
Ich bin beeindruckt: exec 3<<<"$passphrase"war sogar für mich neu ... Und ich habe gerade ein Kopfgeld von 250 Wiederholungen auf die Antwort geworfen, die Sie zitieren.
Hauke ​​Laging

Antworten:

3

Es gibt den Gnome-Keyring-Daemon und das Seepferdchen, die die Schlüssel- und Passwortverwaltung sehr einfach machen.

Wenn Sie gnome-keyring-daemon als GPG-Agent ausführen, können Sie Ihre GPG-Schlüssel automatisch entsperren. Dazu wird ein Kennwortschlüsselring verwaltet, der die Kennwörter für Websites, GPG-Schlüssel, SSH-Schlüssel usw. enthält. Dieser Kennwortschlüsselring wird dann mit einem eigenen Kennwort gesichert. Sie entsperren es also und der Gnomschlüsselring entsperrt alles andere.
Als zusätzlichen Bonus verfügt gnome-keyring-daemon über einen "Login" -Schlüsselring. Wenn das Kennwort mit Ihrem Benutzerkennwort übereinstimmt, wird der Schlüsselring beim Anmelden automatisch entsperrt.


Aufbau

Wie bringt man das zum Laufen? Installieren Sie einfach Gnome-Keyring-Daemon und Seepferdchen. Das Paket sollte die gesamte Systemkonfiguration für Sie übernehmen. Stellen Sie einfach sicher, dass Sie keinen anderen Schlüsselring-Daemon oder GPG-Agenten starten . Was zuletzt startet, "gewinnt" und der Gnomschlüsselring startet im PAM-Stack, also extrem früh.

Wenn Ihre GPG-Schlüssel in gespeichert sind ~/.gnupg, werden sie automatisch abgeholt und fungieren als GPG-Agent für sie. Gleiches gilt für SSH-Schlüssel, die in gespeichert sind~/.ssh

Wenn Sie zum ersten Mal versuchen, den privaten Schlüssel zu verwenden, wird ein Dialogfeld angezeigt, das folgendermaßen aussieht: (Ich habe ihn über eine einfache Befehlszeile ausgelöst. gpg -d myfile.gpg) Schlüsselring entsperren
Wählen Sie einfach "Diesen Schlüsselring automatisch entsperren, wenn ich angemeldet bin".

Jetzt haben wir nicht wirklich über Seepferdchen gesprochen. Das liegt daran, dass es nicht unbedingt notwendig ist. All dies wurde nur mit dem regulären Gnome-Keyring-Daemon durchgeführt. Mit Seepferdchen können Sie jedoch alle Ihre Schlüssel und Schlüsselringe anzeigen und verwalten. Wenn Sie die zentralisierte Authentifizierung (LDAP) verwenden, müssen Sie diese beim Ändern Ihres Anmeldekennworts verwenden, um auch das Kennwort auf dem Schlüsselring "Anmelden" entsprechend zu ändern.

Seepferdchen - GPG-Schlüssel


Andere Passwörter

Wie bereits erwähnt, kann gnome-keyring-daemon auch Website-Passwörter speichern. Das letzte Mal, als ich überprüft habe, dass Chrome dies unterstützt, Firefox jedoch nicht. Es gibt jedoch einen Trick, um es zum Laufen zu bringen.
Standardmäßig haben Sie 2 Schlüsselringe, einen "Login" -Schlüsselring und einen "Standard" -Schlüsselring. Der "Standard" -Schlüsselring ist der Standard (daher der Name). Da es sich jedoch um einen separaten Schlüsselring handelt, wird er nicht automatisch entsperrt. Wenn Sie in Seepferdchen mit der rechten Maustaste auf den Schlüsselring "Anmelden" klicken, können Sie "als Standard festlegen". Wählen Sie diese Option, um sie für Kennwörter zu verwenden. Ich persönlich lösche einfach die "Standard" und benutze "Login" für alles.

Patrick
quelle
Schade, dass ich kein Gnomenbenutzer bin. Ich habe sudo apt-get remove gnupg-agentund sudo apt-get install gnome-keyring seahorse. Erstellen Sie dann eine Datei /etc/X11/Xsession.d/999gnomekeyringmit dem folgenden Inhalt. 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(Andernfalls würde der Gnome-Schlüsselring nicht einmal in KDE gestartet.) Wenn ich jetzt starte gpg -d myfile.gpg, werde ich nach dem Passwort gefragt und es wird zwischengespeichert, aber ich wurde nie mit diesem Dialog aufgefordert .
Adrelanos
(Das ist schlecht, weil ich wieder da bin, wo ich angefangen habe. Der Signaturschlüssel wird separat zwischengespeichert.) (Es gibt eine neue Zeile zwischen der Auswertungs- und der Exportzeile, die mit dem Kommentar-Markup hier nicht möglich ist.)
adrelanos
Ich verwende Gnome auch nicht für meinen Desktop-Manager. Es ist nicht erforderlich. Gnome macht viel mehr als nur seinen Desktop-Manager. Sie sollten nichts hinzufügen müssen /etc/X11/Xsession.d. Das soll im PAM-Stack gemacht werden. Sie sollten einen session optional pam_gnome_keyring.so auto_startEintrag in einer oder mehreren Dateien in haben /etc/pam.d. Leider benutze ich kein Debian, daher weiß ich nicht welches. Wenn das nicht da ist, dann ist das das Problem.
Patrick
Zeigt an /etc/X11/Xsession.d, ps aux | grep gnomedass der Gnome-Schlüsselring-Daemon nicht gestartet wird, ohne etwas hinzuzufügen . (Trotzdem entfernt.) /usr/share/doc/libpam-gnome-keyring/README.DebianSagt If 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(Zeilenumbrüche durch se Kommentare entfernt). Hat das, hinzugefügt /etc/pam.d/kdm, kdm neu gestartet. Keine Agentenlast, keine verfügbar.
Adrelanos
Ich bin ratlos. Wenn Sie es verwenden kdmund es einfügen /etc/pam.d/kdm, sollte es das getan haben. Das einzige, was ich vorschlagen kann, wenn Sie diesen Weg noch verfolgen möchten, ist das Durchsuchen von Protokollen. Entschuldigung für die falsche Hoffnung, dachte, dies wäre eine einfache Lösung für Sie.
Patrick
0

Ich habe einige Nachforschungen angestellt und das Ergebnis ist für mich überraschend, aber einfach:

Wenn diese Art und Weise genannt gpgkommuniziert nicht mit gpg-agent überhaupt ! gpgist in der Lage, alle diese Operationen selbst durchzuführen.

Aber wenn er gpg-agentnicht einmal weiß, dass etwas passiert ist, kann er kaum eine Passphrase kennen, die er vorher nicht kannte.

Hauke ​​Laging
quelle
Sieht so aus, als hätte ich einen Weg gefunden, wie dies nicht gelöst werden kann.
Adrelanos
Meine ursprüngliche Frage ist noch offen. (Welches ist Can I enter my gpg password just once and unlock all my sub keys (signing, decryption, authentication)?) Ich hoffe, das Passwort in gpg-agentoder gpg-connect-agentirgendwie möglich zu leiten.
Adrelanos