it-swarm.com.de

gpg verschlüsselt Datei ohne Tastaturinteraktion

Ich führe den nächsten Befehl innerhalb 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) 
68
coto

Wie David angedeutet hat, besteht das Problem darin, dass gpg dem öffentlichen Schlüssel, den Sie zum Verschlüsseln verwenden, nicht vertraut. Sie könnten den Schlüssel unterschreiben, wie er es erklärte.

Eine Alternative - vor allem, wenn der Schlüssel gelegentlich geändert wird - wäre, --trust-model always an Ihren gpg-Befehl anzuhängen.

Hier ist das relevante Bit aus der Manpage:

--trust-model pgp|classic|direct|always|auto

     Set what trust model GnuPG should follow. The models are:

     pgp    This is the Web of Trust combined with trust signatures as used in
            PGP 5.x and later. This is the default trust model when creating a
            new trust database.

     classic
            This is the standard Web of Trust as used in PGP 2.x and earlier.

     direct Key validity is set directly by the user and  not  calculated  via
            the Web of Trust.

     always Skip  key  validation  and  assume that used keys are always fully
            trusted. You generally won't use this unless you  are  using  some
            external  validation  scheme.  This  option  also  suppresses  the
            "[uncertain]" tag printed with signature checks when there  is  no
            evidence that the user ID is bound to the key.

     auto   Select  the  trust  model depending on whatever the internal trust
            database says. This is  the  default  model  if  such  a  database
            already exists.
65
rsaw

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, sodass Sie ohne Eingabeaufforderung verschlüsseln können

40
Antony

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 für USER nicht signiert ist. Wenn Sie es vertrauen, können Sie es mit unterschreiben 

gpg --edit-key USER sign

Abhängig von Ihrer Konfiguration werden wahrscheinlich einige Fragen gestellt. Tun Sie dies einmal, dann sollten Sie gut in Ihre Crontab gehen. Ich würde trotzdem empfehlen, die von mir vorgeschlagene Lösung zu verwenden, die Passphrase in eine separate Datei zu packen und sie nur für den Benutzer lesbar zu machen, unter dem der Befehl ausgeführt wird. Wenn Sie das tun, können Sie den yes | beenden und nur die Verschlüsselungsleitung verwenden.

10
David Souther

Verwenden Sie diesen Befehl, es wird Ihnen helfen

echo "PASSPHRASE" | gpg --passphrase-fd 0 --always-trust -r USER --encrypt FILENAME.TX
2
Anil

Ich gehe davon aus, dass wie ich eine Menge Leute wegen der "ohne Tastaturinteraktion" Teil der Frage hierher kommen. Mit gpg2 und gpg-agent wurde es ziemlich kompliziert, Sachen ohne Tastaturinteraktion zu signieren/verschlüsseln/entschlüsseln. So erstellen Sie eine Signatur, 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 Bedürfnissen. Die anderen Schalter sind obligatorisch. Sie können auch einfach --passphrase 'SECRET' verwenden. Wie schon gesagt, sei vorsichtig damit. Klartext-Textdateien sind natürlich nicht viel besser.

1
LimeRed

Ein anderer Ansatz: Umden Zugriffauf vertrauliche Daten zu verweigern (anstatt sie mit Fremdschlüsseln zu verschlüsseln), lade ich NUR * meinen ** PUBLIC - Schlüssel hoch auf dem Server, auf dem ich Daten schützen möchte, und verwende diesen Schlüssel zum Verschlüsseln. Dadurch entfällt die Notwendigkeit einer interaktiven Aufforderung zur Eingabe eines Kennworts, das die Automatisierung erleichtert, und am besten ist derPRIVATE- Schlüssel vom öffentlichen Server getrennt.

gpg --batch --yes --trust-model always -r $YOURPUBKEYEMAILADDRESS -e ./file.txt

WennNICHTmit Ihrem eigenen öffentlichen Schlüssel verschlüsselt wird, ist die Verwendung des Schalters --trust-model always jedoch etwas unhandlich. Eine andere Möglichkeit, das Problem der Sperrung des Zugriffs auf Daten zu lösen. HTH-Terrence Houlahan

0
F1Linux

Ich bin auch auf dieses Thema gestoßen. Ich konnte den Sign-Key nicht dazu bringen, etwas Interessantes zu tun. Folgendes habe ich getan:

erstellen Sie einen GPG-Schlüssel: 

gpg --gen-key

lange Schlüssel-ID erhalten (Ergebnis in 5. Spalte):

gpg --list-keys --with-colon [email protected]

Fügen Sie der Datei ~/gnupg/gpg.conf eine vertrauenswürdige Schlüssellinie hinzu

trusted-key 16DIGITALPHANUMERICKEYID

gpg-Zeile im Backup-Skript:

gpg -e -r [email protected] backup_file.tgz

Cron debuggen: Ich erfasse auch die Ausgabe von cron dubugging, indem stdout und stderr an eine Protokolldatei in der cron-Befehlszeile gesendet werden. Es ist hilfreich zu wissen

0
jorfus

enter image description here

Wenn Sie zum ersten Mal ein Zertifikat mit Ihrer E-Mail-ID erstellen, wählen Sie ein vollständig vertrauenswürdiges Zertifikat. Wenn Sie eine Datei verschlüsseln, wird keine Frage wie ... gestellt. Für weitere Informationen öffnen Sie das Bild über dem Link.

Es ist NICHT sicher, dass der Schlüssel der in der Benutzer-ID angegebenen Person gehört. Wenn Sie wirklich wissen, was Sie tun, können Sie die nächste Frage mit Ja beantworten.

Diesen Schlüssel trotzdem benutzen? (J/N)

0
sumer raj

Oder unterschreiben Sie den Schlüssel (nachdem Sie den Fingerabdruck natürlich genau eingegeben haben):

gpg --sign-key <recipient email address>

Danach vertrauen Sie voll auf den Schlüssel.

  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
0
lanes