【发布时间】:2015-04-05 12:39:27
【问题描述】:
我正在尝试将 S3 的一些环境变量存储在加密的 shell 脚本中(因此这些密钥不会未加密地存储在我的驱动器上),如下所示:
export AWS_ACCESS_KEY_ID="example_key_id"
export AWS_SECRET_ACCESS_KEY="example_secret_access_key"
这被保存为一个shell脚本setenv.sh,我已经加密为setenv.sh.gpg。
我正在尝试使用 eval $(gpg --decrypt ./setenv.sh.gpg) 运行文件脚本,它会解密文件,但不会相应地加载环境变量(printenv 确认了这一点)。
我觉得可能和这个问题有关:Shell script to set environment variables
但是,我尝试了 source 的许多不同变体,但都无济于事,因为我认为 source 需要一个文件而不是脚本的内容。
如何使用 gpg 加密的 shell 脚本设置环境变量?
【问题讨论】:
-
Bash 中的 Process substitution 可能会这样做;这在 Zsh 中可用吗?
source <( gpg --decrypt ./setenv.sh.gpg )。如此获得的安全是虚幻的吗?是什么阻止您的用户运行 GPG 命令并查看输出? -
我想这样设置脚本的原因是我可以为不同的项目加载不同的 S3 密钥,而不必每次都手动输入它们。安全方面,我认为这将是一个好主意,以防我的笔记本电脑被盗或被盗。 (我有全盘加密,但解锁时也可能被盗等)
-
我认为它符合“通过默默无闻的安全”的条件,但只要您认识到这一点,并意识到它的局限性,就不会造成太大的伤害。特别是,在我看来,你不应该依赖它来保证一切安全。
标签: shell encryption zsh