Ausführen von Verschlüsselungsbefehlen unter Linux ohne Protokollierung der Shell-Historie

1427
Guerlando OCs

Ich möchte etwas verschlüsseln, ohne irgendeinen Teil des Shell-Befehls zu protokollieren, um die Historie zu bashieren. Ich möchte nicht, dass das Kennwort oder Dateinamen oder der Befehl in der Shell-Historie angezeigt werden. Wie mache ich es mit AES 256 mit SHA2? (Ich glaube, das ist heute die geheimste Konfiguration, oder?)

2
Das sind eigentlich 2 Fragen. Sie könnten in Betracht ziehen, eine weitere Frage für "die geheimste Konfiguration heute" zu öffnen. RobertL vor 6 Jahren 0
Stellen Sie Ihrem Befehl ein Leerzeichen voran. Cyrus vor 6 Jahren 0
@Cyrus, true, sollte erwähnen, dass es nur mit `bash` funktioniert und auch von der Konfiguration abhängt RobertL vor 6 Jahren 0
@RobertL: Das ist richtig. Die Variable `HISTCONTROL` sollte das Schlüsselwort` ignorespace` enthalten. Cyrus vor 6 Jahren 0
Siehe auch: https://unix.stackexchange.com/questions/6094/isthere-any-way-to-keep-a-command-von-being-added- to-your-history BowlOfRed vor 6 Jahren 0

3 Antworten auf die Frage

8
RobertL

Der beste Weg, aus der Geschichte drehen vorübergehend ist ein Sub - Shell mit dem Start - HISTSIZE Umgebungsvariable festgelegt 0:

HISTSIZE=0 $0 type your commands here <ctrl-D> 

Die Verlaufsprotokollierung in Ihrer ursprünglichen Login-Shell bleibt nach dem Beenden der Subshell unberührt .

Damit stellen Sie $0sicher, dass Sie dieselbe Shell starten, die Sie verwenden. Sie könnten ersetzen $0durch den Pfad zu jeder Schale, zum Beispiel: /bin/sh.

Dies funktioniert mit den meisten gängigen Schalen einschließlich bash, ksh, zsh, dash. Ich denke, das ist ein POSIX-Standard.

Sie können auch exiteingeben, um die Subshell zu verlassen.

Beispiel

$ true 1 $ true 2 $ HISTSIZE=0 $0 $ true 3 $ true 4 $ exit $ history 4 500 true 1 501 true 2 502 HISTSIZE=0 $0 503 history 4 
3
Ipor Sircer
$ unset HISTFILE $ cat something | openssl enc -e -aes256 > encrypted-something enter aes-256-cbc encryption password: Verifying - enter aes-256-cbc encryption password: 
@GuerlandoOCs: "Etwas" hier ist nur der Dateiname - Sie haben nie gesagt, dass der Dateiname empfindlich war. Scott vor 6 Jahren 0
Sie sollten wissen, dass durch das Aufheben der Einstellung der Variablen "HISTFILE" keine * der Verlaufsliste in der Datei gespeichert wird, selbst wenn diese Befehle vor "HISTFILE" nicht gesetzt wurden. "bash" hat eine "History-Liste", die in die "HISTFILE" geschrieben wird, wenn "bash" beendet wird. RobertL vor 6 Jahren 0
Kann die Befehlszeile mit einem Leerzeichen starten, um nicht in die Verlaufsliste des Arbeitsspeichers aufgenommen zu werden. BowlOfRed vor 6 Jahren 2
@BowlOfRed, das hängt von `HISTCONTROL` /` HISTIGNORE` ab ilkkachu vor 6 Jahren 1
@BowlOfRed Guter Punkt. Beachten Sie, dass es * nur * in `bash` funktioniert und von der Konfiguration von` bash 'mit Umgebungsvariablen gemäß @ilkkachu abhängt. Normalerweise unterstützt die standardmäßige bash-Konfiguration diese Verwendung. RobertL vor 6 Jahren 0
2
xenoid

Wenn die Dateinamen in der Befehlszeile Sie stören, können Sie sie vom Terminal aus lesen:

read infile; read outfile; cat $infile | openssl enc -e -aes256 > $outfile;