我想加密某些内容,但不将 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 标准。ksh
zsh
dash
您也可以键入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;