首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从gpg加密shell脚本设置环境变量?

问从gpg加密shell脚本设置环境变量?
EN

Stack Overflow用户
提问于 2015-04-05 20:39:28
回答 2查看 2.9K关注 0票数 2

我尝试将S3的一些环境变量存储在一个加密的shell脚本中(这样这些密钥就不会以未加密的形式存储在我的驱动器上),如下所示:

代码语言:javascript
复制
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脚本来设置环境变量?

EN

回答 2

Stack Overflow用户

发布于 2015-04-06 23:52:35

正如第一个评论者所说,source <(gpg --decrypt ./setenv.sh.gpg)将实现您所追求的目标。它应该可以像bash一样在Zsh中工作。

N.B. Zsh也有=(...)用于进程替换,但这将使未加密的临时文件留在某个地方,这与使用加密的目的背道而驰。坚持<(...)它使用命名管道。

如果目标是保护凭据不被使用它们的用户访问,那么这是徒劳的。另一方面,如果你想在笔记本电脑被盗的情况下保护凭证,那么这里有一些真正的保护措施。一种相当常见的策略是将凭据加密保存在磁盘上,并仅在需要时才将其加载到内存中。

考虑到你的硬盘是加密的,我不确定你能从中得到多少。我能想到的唯一现实的好处是,如果你保留未加密的备份,它们会被窃取。这取决于你有多偏执,这可能值得,也可能不值得。

票数 2
EN

Stack Overflow用户

发布于 2019-06-21 00:01:57

在Zsh中,您应该能够调用:

代码语言:javascript
复制
$(gpg --decrypt ./setenv.sh.gpg)

或者在脚本中弹出该行,然后用.调用它,例如:

代码语言:javascript
复制
. decrypt-and-setenv.sh

这会将env var导出到当前的shell中,并使文件保持加密状态。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29457360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档