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

160683
morpheous

Ich möchte einige tar.gz-Dateien (und möglicherweise tar.bz2) erstellen, indem Sie den Befehl tar auf Ubuntu 10.04 verwenden.

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

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

Weiß jemand, wie das geht?

114

6 Antworten auf die Frage

138
akira

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

Tarring und Komprimierung ist ein Job für tarund gzipoder bzip2, Crypto 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 die symetrische Verschlüsselung. Sie müssen dem Empfänger das verwendete 'Passwort' (alias der Schlüssel) mitteilen. Die gpg-Variante verwendet eine Kombination aus symmetrischer und asymetrischer Verschlüsselung. Sie verwenden den Schlüssel des Empfängers (dh, Sie müssen keinem Benutzer ein Kennwort mitteilen), um einen Sitzungsschlüssel zu erstellen und den Inhalt mit diesem Schlüssel zu verschlüsseln.

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

Für alle, die sich fragen, wie sie die Datei mit openssl entschlüsseln können: `openssl aes-256-cbc -d -in out.tar.gz.enc -out decrypted.tar.gz` ndbroadbent vor 11 Jahren 23
@Nathan.f77 Dieser Befehl zeigt auch, wie Dinge ausgeführt werden, ohne sie in openssl zu leiten. `openssl enc -aes-256-cbc -e -in foo.tar.gz -out bar.tar.gz.enc` Keith Smiley vor 10 Jahren 1
@KeithSmiley Wenn Sie über große Archive verfügen und nicht viel Speicherplatz haben (wie es bei einem VPS möglich ist), ist das Pfeifen platzsparender. Andrew Savinykh vor 9 Jahren 2
Ich kann das nicht auf einem Mac laufen lassen. Ist das irgendwie anders? eleijonmarck vor 7 Jahren 0
@eleijonmarck das Teil liefern "funktioniert da nicht "… akira vor 7 Jahren 2
27
Antony Thomas

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

zip -e <file_name>.zip <list_of_files> 

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

Arbeitsbeispiel:

$ touch file_.txt # creates blank files file_0 & file_1  $ zip -e file.zip file_* # ask zip to encrypt $ ENTER PASSWORD: $ VERIFY PASSWORD: $ ls file* 
Die Zip-Dateiverschlüsselung ist in keiner Weise sicher. Kristopher Ives vor 10 Jahren 10
@KristopherIves kannst du auf die Unsicherheit eingehen? tscizzle vor 7 Jahren 3
@tscizzle https://www.unix-ag.uni-kl.de/~conrad/krypto/pkcrack/pkcrack-readme.html Kristopher Ives vor 7 Jahren 0
@KristopherIves Es benötigt "ein weiteres ZIP-Archiv, das mindestens eine der Dateien aus dem verschlüsselten Archiv in * unverschlüsseltem * Format" enthält, um zu funktionieren. Franklin Yu vor 7 Jahren 2
Msgstr "Sie müssen nur einen Teil des Klartextes (mindestens 13 Bytes) kennen." Dies macht es * viel * anfälliger als wenn eine ganze unverschlüsselte Datei benötigt würde (was schon ziemlich schlecht ist). Die Zip-Verschlüsselung ist auch nicht gegen Brute-Force-Angriffe (z. B. mit Jack the Ripper) resistent. Niemand sollte es für etwas Ernstes verwenden. EM0 vor 6 Jahren 2
15
Graphics Noob

Hier sind einige Möglichkeiten, dies zu tun. Beachten Sie Folgendes: Wenn Sie separate Komprimierungs- und Verschlüsselungstools verwenden, sollten Sie vor der Verschlüsselung immer eine Komprimierung durchführen, da verschlüsselte Daten grundsätzlich 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 standardmäßig vor der Verschlüsselung, -cdh die symmetrische Verschlüsselung wird mit einem Kennwort verwendet. Die Ausgabedatei wird sein clear_text.gpg. Die gpgVerwendung von Standard-OpenPGP-Formaten hat den Vorteil, dass 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 aufgerufene Datei ausgegeben clear_text.gz.nc.

Verwenden bcrypt

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

bcrypt komprimiert vor der Standardverschlüsselung standardmäßig die -rOption, damit die Eingabedatei nicht gelöscht wird. Die Ausgabedatei wird clear_text.bfestandardmäßig aufgerufen .

Mit 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 klingt wie ein Programm, das Eingaben über stdin entgegennimmt und verschlüsselte Daten über stdout ausgibt. Es unterstützt keine Komprimierung, sodass Sie die Eingabe zuerst durch gzip leiten können. Da die Ausgabe an stdout geht, müssen Sie sie in eine Datei mit einem Namen Ihrer Wahl umleiten. Wahrscheinlich nicht der effektivste Weg, um das zu tun, was Sie fragen, aber eine Pipette ist ein vielseitiges Werkzeug. Ich dachte, es wäre erwähnenswert.

10
SaeX

Sie können 7zip verwenden, um Ihr kennwortgeschütztes Archiv zu erstellen. Sie können das Kennwort in der Befehlszeile (oder in einem Skript) folgendermaßen angeben:

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

7zip kann auch wie folgt von STDIN gelesen werden:

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 herumspielen (z -tzip. B. ).

Ich habe dies als Antwort gewählt, weil es die einzige ist, die die Frage beantwortet. Die Frage ist nicht, wie Sie eine Nachricht verschlüsseln, sondern wie Sie ein Archiv mit einem Kennwort schützen. Das ist alles was ich tun musste. (Google Mail blockierte meine Server-Backups, da entschieden wurde, dass der Anhang etwas Unsicheres enthielt und ich nur ein Kennwort hinzufügen musste. Es muss nicht sicher sein.) felwithe vor 7 Jahren 3
7
Ignacio Vazquez-Abrams

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

Ah, das erklärt, warum ich online nichts finden konnte. Ich denke, ich werde für Zip gehen. morpheous vor 13 Jahren 0
Gah !, Ich versuche, ein Verzeichnis rekursiv mit Passwörtern zu komprimieren, und es wird nur eine ZIP-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 vor 13 Jahren 0
Genau wie der Mann sagt "-r". Ignacio Vazquez-Abrams vor 13 Jahren 4
3
LHolleman

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 -