#ansible #vault #encryption-decryption #key-file #cli-tool #crypto

应用 ansivault

CLI工具ansible-vault 1.1实现

2个版本

0.1.1 2021年7月21日
0.1.0 2021年4月29日

加密学 中排名712

MIT/Apache

20KB
275

ansivault

Ansible vault 1.1的Rust实现,虽然不是所有功能都完整,但ansivault允许使用或不用Ansible头工作。

功能

  • 加密 字符串或文件(带或不带Ansible头)
  • 解密 字符串或文件(带或不带Ansible头)
  • 换密 字符串或文件(纯加密,带或不带Ansible头)
  • 查看 文件(等同于解密到stdout)输入和输出可以是参数、文件或stdin/stdout

在处理由参数提供的保险库文件和密钥时,请注意EOL问题…
编辑器倾向于在最后一个字符后添加一个EOL(行尾)字符。如果您使用k选项提供密钥,则不会出现此字符。在vim中,您可以使用以下命令避免这种行为::set noendofline nofixendofline

示例

# Encrypt from arg
ansivault -a -k toto encrypt -s lorem ipsum
$ANSIBLE_VAULT;1.1;AES256
      62393433633962666237643534326531633166353364646339623837363231343131656662323465
      3731396538376632623432336166643835663538363234340a303735396438636266306538633637
      32613133303933396563386439366464386133363666616262633331626165333164313566376561
      3861353538663538610a393965653462383031303334623032636336333831663364613234316430
      6266

# Encrypt raw (not ansible)
ansivault -k toto encrypt -s lorem ipsum
636237313635343038393061303962363332616538343638623938643531653064643339353434326137383134613338336133626165656165316335343034610a616233626238316331613966613065363161646637393936613339656666633736643334396538616537653637616165343338613132663838303832653739610a3439643933653237346632646335323663353437623839353637393537383963%

# Roundtrip from stdin / stdout
echo "lorem ipsum" | ansivault -ak toto encrypt | ansivault -ak toto decrypt
lorem ipsum

# Encrypt from file to file
ansivault -ak toto -o my_output_file input_file

配置

为了避免将保险库密钥作为参数提供,可以将环境变量ANSIVAULT_KEY_FILE设置为指向包含保险库密钥的文件的路径。

用法

ansivault [options] <command> [command options] [argument]

常见选项

  • h, help:显示帮助信息并退出
  • v, verbose:日志级别,默认为vvv(INFO)
  • q, quiet:禁用所有日志
  • V, version:显示版本并退出
  • a, ansible:如果提供,则期望存在Ansible头(1.1)
  • k, key:要使用的保险库密钥

命令

decrypt

用于解密文件或指定的字符串。输入不能包含混合数据(例如,包含明文和加密值的文件)。如果没有提供ansible标志,如果输入具有Ansible保险库头,则操作将失败。 用法

ansivault [common options] decrypt [hios] [INPUT_FILE]
  • h, help:显示关于解密命令的帮助
  • o, output OUTPUT_FILE:解密数据的输出文件。如果没有提供,默认为stdout
  • s, input-string INPUT_STRING:要编码的字符串。如果提供,将忽略INPUT_FILE
  • INPUT_FILE:要解密的文件的路径。如果没有提供,则使用stdin

encrypt

用于加密文件或指定的字符串。如果提供ansible标志,输出中将存在Ansible保险库头。

用法

ansivault [common options] encrypt [hios] [INPUT_FILE]
  • h, help:显示关于加密命令的帮助
  • o, output OUTPUT_FILE:加密数据的输出文件。如果没有提供,默认为stdout
  • s, input-string INPUT_STRING:要编码的字符串。如果提供,将忽略INPUT_FILE
  • 输入文件:要加密的文件的路径。如果没有提供,则使用标准输入

rekey

使用提供的新密钥重新加密文件。文件将在原地重新加密。

用法

ansivault [common options] rekey [h]n  INPUT_FILE
  • h, help:显示rekey命令的帮助信息
  • n, new-key NEW_KEY:用于重新加密的新密钥
  • 输入文件:要加密的文件的路径

view

解密并打印加密文件。与ansible decrypt 输入文件的行为相同

用法

ansivault [common options] view [h] INPUT_FILE
  • h, help:显示view命令的帮助信息
  • 输入文件:要显示的文件的路径

许可证

本项目根据您的选择,受以下任一许可证的许可:

贡献

除非您明确表示,否则根据Apache-2.0许可证定义的,您有意提交以包含在guidon中的任何贡献,将按上述方式双重许可,不附加任何额外条款或条件。


文档由cargo readme生成

依赖项

~2–11MB
~105K SLoC