Ich führe den nächsten Befehl in einer Crontab aus, um eine Datei zu verschlüsseln, und ich möchte keine Tastaturinteraktion
echo "PASSPHRASE" | gpg --passphrase-fd 0 -r USER --encrypt FILENAME.TXT
aber ich habe diese Antwort:
gpg: C042XXXX: There is no assurance this key belongs to the named user
pub 40XXX/C042XXXX 2012-01-11 Name LastName. (comment) <[email protected]>
Primary key fingerprint: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
Subkey fingerprint: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
It is NOT certain that the key belongs to the person named
in the user ID. If you *really* know what you are doing,
you may answer the next question with yes.
Use this key anyway? (y/N)
echo -e "PASSPHRASE" "\nyes" | gpg --passphrase-fd 0 -r USER --encrypt FILENAME.TXT
?--batch
und--yes
.Antworten:
Wie David angedeutet hat, besteht das Problem hier darin, dass gpg dem öffentlichen Schlüssel, den Sie zum Verschlüsseln verwenden, nicht vertraut. Sie könnten den Schlüssel unterschreiben, wie er erklärte.
Eine Alternative - insbesondere wenn sich der Schlüssel gelegentlich ändert - besteht darin
--trust-model always
, Ihren gpg-Befehl zu verwenden.Hier ist das relevante Bit aus der Manpage:
quelle
Hier ist meine Lösung, basierend auf gpg2 (aber ich wette, Sie können eine ähnliche Technik auf gpg anwenden)
$ gpg2 --edit-key {recipient email address} > trust > 5 (select 5 if you ultimately trust the key) > save
Dadurch wird gpg2 angewiesen, dem Schlüssel vollständig zu vertrauen, damit Sie ohne Aufforderung verschlüsseln können
quelle
gpg2 --edit-key <key-id>
du es getan hastlsign
undsave
. Ich denke, das Vertrauen 5 ist eine falsche Verwendung dafür (missverstanden), und (für mich) es war sogar unwirksam (nutzlos), weil x539 es erzählt hat.gpg
, nicht nur fürgpg2
:)Der Hack-Ansatz:
echo -n PASSPHRASE > phrase chmod 400 phrase #Make sure ONLY the user running the cron job can read the phrase yes | gpg --passphrase-fd 3 --recipient USER --encrypt FILENAME.txt 3<phrase
Das zugrunde liegende Problem ist, dass der Schlüssel, den Sie für USER haben, nicht signiert ist. Wenn Sie ihm vertrauen, können Sie ihn unterschreiben
Abhängig von Ihrer Konfiguration werden wahrscheinlich einige Fragen gestellt. Tun Sie dies einmal, dann sollten Sie gut darin sein, in Ihre Crontab zu gehen. Ich würde weiterhin empfehlen, die von mir vorgeschlagene Lösung zu verwenden, die Passphrase in einer separaten Datei abzulegen und sie nur für den einen Benutzer lesbar zu machen, unter dem der Befehl ausgeführt wird. Wenn Sie das tun, können Sie die töten
yes |
und haben nur die Verschlüsselungsleitung.quelle
lsign
wäre eine bessere Idee. Ist es nicht so, wenn Sie z. Signieren Sie lokal einen Schlüssel, dieser bleibt auf Ihrem Computer. Aber wenn Sie einfach unterschreiben, gilt dies als öffentlich und wird daher an Keyserver gesendet, wenn Sie eine--send-keys
?Verwenden Sie diesen Befehl, er wird Ihnen helfen
echo "PASSPHRASE" | gpg --passphrase-fd 0 --always-trust -r USER --encrypt FILENAME.TX
quelle
Ich bin auch darauf gestoßen. Ich konnte keinen Zeichenschlüssel bekommen, um etwas Interessantes zu tun. Folgendes habe ich getan:
Erstellen Sie einen GPG-Schlüssel:
lange Schlüssel-ID abrufen (Ergebnis in der 5. Spalte):
Fügen Sie ~ / gnupg / gpg.conf eine vertrauenswürdige Schlüsselzeile hinzu
GPG-Zeile im Sicherungsskript:
Debuggen von Cron: Ich erfasse auch die Cron-Dubugging-Ausgabe, indem ich stdout und stderr an eine Protokolldatei in der Cron-Befehlszeile sende. Es ist hilfreich zu wissen
quelle
trusted-key
Zeilegpg.conf
verursachen ,gpg
um immer den Schlüssel vertrauen so vollständig wie einer der eigenen Schlüssel des Benutzers , die eine schlechte Sache ist . Die Übergabe--trusted-key
als Argument und nur in diesem speziellen Fall ist akzeptabel (ebenso wie die Übergabe--trust-model=always
auf die gleiche Weise ).--edit-key
, nicht durch Hinzufügen einertrusted-key
Zeile). Der Fragesteller sagte nicht, dass es ihr eigener Schlüsselgpg
war, über den er sich beschwerte.Ich gehe davon aus, dass wie ich viele Leute hierher kommen, um den Teil der Frage „ohne Tastaturinteraktion“ zu behandeln. Mit gpg2 und gpg-agent wurde es ziemlich kompliziert, Dinge ohne Tastaturinteraktion zu signieren / verschlüsseln / entschlüsseln. So würden Sie eine Signatur erstellen, wenn Ihre Passphrase für den privaten Klartextschlüssel in einer Textdatei gespeichert wird:
cat something_so_sign.xzy | gpg \ --passphrase-file "plaintext_passphrase.txt" \ --batch \ --pinentry-mode loopback \ -bsa
Ändern Sie -b -s -a je nach Ihren Anforderungen. Die anderen Schalter sind obligatorisch. Sie können auch nur verwenden
--passphrase 'SECRET'
. Seien Sie, wie bereits erwähnt, vorsichtig damit. Klartext-Textdateien sind natürlich nicht viel besser.quelle
Oder unterschreiben Sie den Schlüssel (natürlich nachdem Sie den Fingerabdruck sehr genau eingegeben haben):
Danach vertrauen Sie dem Schlüssel voll und ganz.
1 = I don't know or won't say 2 = I do NOT trust 3 = I trust marginally 4 = I trust fully 5 = I trust ultimately
quelle
--lsign-key
Kann auch eine bessere Idee sein, nein? siehe meinen anderen Kommentar über lsignWenn Sie zum ersten Mal ein Zertifikat mit Ihrer E-Mail-ID erstellen, wählen Sie ein vollständig vertrauenswürdiges Zertifikat aus. Wenn Sie eine Datei verschlüsseln, werden keine Fragen wie ... gestellt. Weitere Informationen finden Sie im obigen Link.
quelle
Ein anderer Ansatz: Um den Zugriff auf vertrauliche Daten zu verweigern (anstatt sie mit den Schlüsseln von Drittanbietern zu verschlüsseln), lade ich NUR * meinen ** PUBLIC- Schlüssel auf den Server hoch, auf dem ich Daten schützen möchte, und verwende diesen Schlüssel zum Verschlüsseln. Dadurch entfällt die Notwendigkeit einer interaktiven Eingabeaufforderung zur Eingabe eines Kennworts, das die Automatisierung erleichtert, und das Beste ist, dass der PRIVATE- Schlüssel vom öffentlichen Server getrennt ist.
gpg --batch --yes --trust-model always -r $YOURPUBKEYEMAILADDRESS -e ./file.txt
Wenn Sie jedoch NICHT mit Ihrem eigenen öffentlichen Schlüssel verschlüsseln, ist die Verwendung des Schalters
--trust-model always
etwas schwierig. Auf jeden Fall eine andere Art, das Problem der Verweigerung des Zugriffs auf Daten zu lösen. HTH-Terrence Houlahanquelle