Welche Schritte sind erforderlich, um Passphrasen zwischenzuspeichern, die über pinentry mit gpg-preset-passphrase in 2.1.15 eingegeben wurden?

8

Ich versuche, Passphrasen für die Verwendung auf einem unbeaufsichtigten Computer zwischenzuspeichern. Da dies ein gewisses Risiko darstellt, würde ich es vorziehen, zu wählen, welche Passphrasen zwischengespeichert werden, und zu vermeiden, beide default-cache-ttlund max-cache-ttlunangenehm hohe Werte festzulegen sowie zu vermeiden, dass der gpg-agentgesamte Cache regelmäßig gelöscht werden muss - daher suche ich nach einer Lösung mit gpg-preset-passphrase. Einige der Informationen, die ich bei der Fehlerbehebung gefunden habe, beziehen sich auf ältere Versionen von GnuPG, daher bin ich mir nicht sicher, ob ich alle Unterschiede ausreichend berücksichtigt habe.

Erstens habe man 1 gpg-agentich , wie von vorgeschrieben , export GPG_TTY=$(tty)in meinem .bashrc.

Angenommen, ich starteeval $(gpg-agent --daemon --allow-preset-passphrase --default-cache-ttl 1 --max-cache-ttl 31536000) , um gpg-agent zu starten, und stelle fest, dass die gpg-voreingestellte Passphrase immer noch --max-cache-ttl berücksichtigt (Standard 2 Stunden).

Ich bekomme dann den Schlüsselgriff $KEYGRIPdes gewünschten geheimen Unterschlüssels mit gpg --with-keygrip -K.

Damit versuche ich es /path/to/gpg-preset-passphrase -c $KEYGRIP. Bei der Rückkehr wird Folgendes gedruckt:

   gpg-preset-passphrase: caching passphrase failed: Not implemented

Beim erneuten Versuch, etwas hinzuzufügen --verbose --debug 6 --log-file /path/to/gpg-agent.log, gpg-agentwird mein Protokoll angehängt

   gpg-agent[4206] listening on socket /run/user/1000/gnupg/S.gpg-agent
   gpg-agent[4207] gpg-agent (GnuPG) 2.1.15 started
   gpg-agent[4207] handler 0x7f86ef783700 for fd 5 started
   gpg-agent[4207] command PRESET_PASSPHRASE failed: Not implemented
   gpg-agent[4207] handler 0x7f86ef783700 for fd 5 terminated

Ich bin mir nicht sicher, wo ich vorgehen soll, abgesehen davon, dass ich tiefer in die Quelle eintauche. Deshalb frage ich mich, ob jemand zuerst die Schritte korrigieren kann, die ich unternehme.

user5255922
quelle
Hast du das jemals gelöst?
AlMehdi
Ich bin mir nur geringfügig sicher, dass die Passphrase an stdin von gesendet werden gpg-preset-passphrasemuss. Mein erster konkreter Hinweis dazu
ThorSummoner
Wie sende ich es von stdin anstelle von Echo? das klingt überhaupt nicht sicher
holms

Antworten:

0

Es hört sich so an, als ob Sie die Passphrase an gpg-preset-passphraseover stdin senden möchten , ohne sie zu wiederholen (um zu vermeiden, dass sie in der Prozessliste angezeigt wird):

/path/to/gpg-preset-passphrase -c $KEYGRIP <<< $PASSPHRASE

Wenn Sie sich für die Portabilität außerhalb von Bash interessieren:

/path/to/gpg-preset-passphrase -c $KEYGRIP <<EOF
$PASSPHRASE
EOF

Diese Antwort zur Syntax "Here Documents" (EOF) war für mich von unschätzbarem Wert: https://unix.stackexchange.com/a/88492

Sie brauchen auch allow-preset-passphrasein Ihrem ~/.gnupg/gpg-agent.confwie von Holms erwähnt.

Wenn Sie dies mit symmetrischer Verschlüsselung tun möchten (da ich bereits meinen Verstand verloren habe, müssen Sie dies möglicherweise nicht tun), lesen Sie meine Antwort hier, um den richtigen Schlüsselgriff / Cacheid zu finden, mit dem die Passphrase in gpg- voreingestellt werden kann. Agent: https://superuser.com/a/1485486/1093343

evnp
quelle