如何在没有 shell 历史记录的情况下在 Linux 上运行加密命令

如何在没有 shell 历史记录的情况下在 Linux 上运行加密命令

我想加密某些内容,但不将 shell 命令的任何部分记录到 bash 历史记录中。我不希望密码或任何文件名或命令出现在 shell 历史记录中。如何使用 AES 256 和 SHA2 来实现?(我相信这是当今最秘密的配置,是吗?)

答案1

$ unset HISTFILE
$ cat something | openssl enc -e -aes256 > encrypted-something
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:

答案2

关闭历史记录的最佳方法暂时地是启动一个子 shellHISTSIZE 环境变量设置0

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

原始登录 shell 中的历史记录仍保留不受影响退出子shell后。

确保$0您启动正在使用的同一 shell。您可以将其替换$0为任何 shell 的路径,例如:/bin/sh

它适用于大多数常见的 shell,包括、、、bash。我认为这是 POSIX 标准。kshzshdash

您也可以键入exit来退出子 shell。

例子

$ 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

如果命令行中的文件名让您困扰,您可以从终端读取它们:

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

相关内容