Wie kann ich gzip-Dateien auf der Kommandozeile mit einem Passwort schützen?

130

Ich möchte mit dem Befehl tar unter Ubuntu 10.04 einige tar.gz- (und möglicherweise tar.bz2-) Dateien erstellen.

Ich möchte die Datei mit einem Passwort schützen.

Was ist der Befehl, um dies zu tun (Ich habe gegoogelt, aber nichts gefunden, das zeigt, wie man komprimierte Dateien mit einem Passwort erstellt und extrahiert).

Weiß jemand, wie das geht?

morphe
quelle

Antworten:

159

Sie müssen die Unix-Philosophie auf diese Aufgabe anwenden: ein Werkzeug für jede Aufgabe.

Teern und Komprimieren ist ein Job für tarund gzipoder bzip2, Krypto ist ein Job für entweder gpgoder openssl:

Verschlüsseln

 % tar cz folder_to_encrypt | \
      openssl enc -aes-256-cbc -e > out.tar.gz.enc

Entschlüsseln

 % openssl enc -aes-256-cbc -d -in out.tar.gz.enc | tar xz

Oder mit gpg

 % gpg --encrypt out.tar.gz

die openssl-variante verwendet eine symmetrische verschlüsselung, sie müssten dem empfänger das verwendete 'passwort' (auch 'der schlüssel' genannt) mitteilen. Die GPG-Variante verwendet eine Kombination aus symmetrischer und asymmetrischer Verschlüsselung. Sie verwenden den Schlüssel des Empfängers (dh, Sie müssen niemandem ein Kennwort mitteilen), um einen Sitzungsschlüssel zu erstellen und den Inhalt mit diesem Schlüssel zu verschlüsseln.

Wenn Sie die zip-Route (oder 7z-Route) wählen, die im Wesentlichen mit der openssl-Variante identisch ist, müssen Sie dem Empfänger das Passwort mitteilen.

Akira
quelle
26
Für alle, die sich fragen, wie man die Datei mit openssl aes-256-cbc -d -in out.tar.gz.enc -out decrypted.tar.gz
openssl
1
@ nathan.f77 Dieser Befehl zeigt auch, wie man Dinge macht, ohne sie in openssl zu leiten. openssl enc -aes-256-cbc -e -in foo.tar.gz -out bar.tar.gz.enc
Keith Smiley
3
@KeithSmiley Wenn Sie große Archive und nicht viel Speicherplatz haben (wie es bei einem VPS der Fall sein könnte), ist das Pipe-Verfahren platzsparender.
Andrew Savinykh
Ich kann das scheinbar nicht auf einem Mac ausführen. Ist das überhaupt anders?
Eleijonmarck
3
@eleijonmarck bieten den Teil "funktioniert nicht, weil <Insert-Error-Message-Here>" ...
Akira
29

Wenn Sie nur Dateien mit einem Kennwort schützen möchten, verwenden Sie das Dienstprogramm hand zip über die Befehlszeile

zip -e <file_name>.zip <list_of_files>

-e fordert das zip-Dienstprogramm auf, die in genannten Dateien zu verschlüsseln

Arbeitsbeispiel:

$ touch file_{0,1}.txt # creates blank files file_0 & file_1    
$ zip -e file.zip file_* # ask zip to encrypt
$ ENTER PASSWORD:
$ VERIFY PASSWORD:
$ ls file*
Antonius Thomas
quelle
11
Die Verschlüsselung von Zip-Dateien ist in keiner Weise sicher.
Kristopher Ives
4
@KristopherIves können Sie die Unsicherheit näher erläutern?
Tscizzle
4
@KristopherIves Es wird "ein anderes ZIP-Archiv benötigt, das mindestens eine der Dateien aus dem verschlüsselten Archiv in unverschlüsselter Form enthält", um zu funktionieren.
Franklin Yu
4
Msgstr "Sie müssen nur einen Teil des Klartextes kennen (mindestens 13 Bytes)". Dies macht es viel anfälliger, als wenn eine ganze unverschlüsselte Datei benötigt würde (was schon ziemlich schlimm ist). Die Zip-Verschlüsselung ist auch nicht resistent gegen Brute-Force-Angriffe (z. B. mit Jack the Ripper). Niemand sollte es für irgendetwas Ernstes benutzen.
EM0
20

Hier sind einige Möglichkeiten, dies zu tun. Wenn Sie separate Komprimierungs- und Verschlüsselungstools verwenden, sollten Sie diese immer vor der Verschlüsselung komprimieren, da verschlüsselte Daten im Wesentlichen nicht komprimierbar sind.

Diese Beispiele komprimieren und verschlüsseln eine aufgerufene Datei clear_text.

Verwenden gpg

$ gpg -c clear_text #Compress & Encrypt
$ gpg -d clear_text.gpg #Decrypt & Decompress

gpg komprimiert die Eingabedatei vor der Verschlüsselung standardmäßig. Dies -cbedeutet, dass eine symmetrische Verschlüsselung mit einem Kennwort verwendet wird. Die Ausgabedatei wird clear_text.gpg. Ein Vorteil der Verwendung gpgist, dass Standard-OpenPGP-Formate verwendet werden, sodass jede Verschlüsselungssoftware, die OpenPGP unterstützt, diese entschlüsseln kann.

Verwenden mcrypt

$ mcrypt -z clear_text #Compress & Encrypt
$ mdecrypt -z clear_text.gz.nc #Decrypt & Decompress

Die -zOption wird komprimiert. Standardmäßig wird eine Datei mit dem Namen ausgegeben clear_text.gz.nc.

Verwenden bcrypt

$ bcrypt -r clear_text #Compress & Encrypt
$ bcrypt -r clear_text.bfe #Decrypt & Decompress

bcrypt wird vor dem Verschlüsseln komprimiert. Die -rOption ist, dass die Eingabedatei dabei nicht gelöscht wird. Die Ausgabedatei wird clear_text.bfestandardmäßig aufgerufen .

Verwenden von gzipundaespipe

$ cat clear_text | gzip | aespipe > clear_text.gz.aes #Compress & Encrypt
$ cat clear_text.gz.aes | aespipe -d | gunzip > clear_text #Decrypt & Decompress

aespipe ist, wie es sich anhört, ein Programm, das Eingaben über stdin entgegennimmt und verschlüsselte Daten über stdout ausgibt. Die Komprimierung wird nicht unterstützt, daher können Sie die Eingabe zuerst über gzip weiterleiten. Da die Ausgabe auf stdout geht, müssen Sie sie in eine Datei mit einem Namen Ihrer Wahl umleiten. Wahrscheinlich nicht der effektivste Weg, das zu tun, was Sie verlangen, aber aespipe ist ein vielseitiges Werkzeug, und ich dachte, es wäre erwähnenswert.

Graphics Noob
quelle
14

Sie können 7zip verwenden, um Ihr passwortgeschütztes Archiv zu erstellen. Sie können das Kennwort auf folgende Weise in der Befehlszeile (oder in einem Skript) angeben:

7z a -p<password> <someprotectedfile>.7z file1.txt file2.txt

7zip kann auch wie folgt aus STDIN lesen:

cat <somefile> | 7z a -si -p<password> <someprotectedfile>.7z

Wenn die Verwendung von ZIP-Dateien obligatorisch ist, möchten Sie möglicherweise mit dem -t<type>Parameter (z -tzip. B. ) herumspielen .

SaeX
quelle
5
Ich habe dies als Antwort gewählt, weil es das einzige ist, das die Frage beantwortet. Die Frage ist nicht, wie eine Nachricht verschlüsselt wird, sondern wie ein Archiv mit einem Kennwort geschützt wird. Das ist alles was ich tun musste. (Google Mail hat meine Server-Backups blockiert, weil festgestellt wurde, dass der Anhang etwas Unsicheres enthält, und ich musste lediglich ein Kennwort hinzufügen. Es muss nicht sicher sein.)
Freitag,
7

Weder tar, gzip noch bzip2 unterstützen den Passwortschutz. Verwenden Sie entweder ein entsprechendes Komprimierungsformat wie zip oder verschlüsseln Sie es mit einem anderen Tool wie GnuPG.

Ignacio Vazquez-Abrams
quelle
Ah, das erklärt, warum ich nichts online finden konnte. Ich denke, ich werde Reißverschluss nehmen.
morphe
Gah !, Ich versuche, ein Verzeichnis mit Passwörtern rekursiv zu komprimieren, und es wird nur eine komprimierte Datei mit dem Namen foobar als (leeres) Verzeichnis erstellt. Hier ist der Befehl, den ich verwende: zip -e foobar.zip foobar. foobar ist ein nicht leerer Ordner im aktuellen Verzeichnis
morpheous
4
Genau wie der Mann sagt -r.
Ignacio Vazquez-Abrams
4

Erstellen mit:

tar czvf - directory | gpg --symmetric --cipher-algo aes256 -o passwordprotectedarchive.tar.gz.gpg

Sie werden nach einem Passwort gefragt.

Entschlüsseln mit:

gpg -d passwordprotectedarchive.tar.gz.gpg | tar xzvf -
LHolleman
quelle