Shell-secrets:使用 GPG 加密的 Shell 环境变量
该工具通过 GPG 加密文件来安全地存储和管理 shell 环境变量。用户需先安装 GPG 并将 `shell-secrets.sh` 脚本添加到 shell 配置文件中。使用时,通过 `gpg` 创建加密文件,然后使用 `login` 函数加载环境变量。`login` 函数会创建新的子 shell,支持嵌套登录。`logout` 或 `Ctrl+D` 用于注销。该工具还提供自动补全功能,并更新 `SECRET_LOGIN` 变量以显示当前登录状态。
waj/shell-secrets
这是一个小型工具,用于从使用 GPG 加密的文件中设置环境变量。
很多命令行工具都需要包含敏感值的环境变量才能工作。这些值通常保存在未加密的 shell 文件中。我创建了这个简单但有用的脚本,用于从加密文件中读取敏感值,同时可以方便地登录和退出不同的帐户。
安装
注意:假设已经为当前用户安装并配置了 GPG。
将 shell-secrets.sh
文件复制到磁盘上的任意位置。在你的 profile shell 脚本中添加以下行:
source /path/to/shell-secrets.sh
此外,建议修改 shell 提示符以显示当前登录名。例如,可以将其插入你的 PS1
变量中:
export PS1='... \e[31m$SECRET_LOGIN\e[0m ...'
变量 $SECRET_LOGIN
保存当前 shell 中正在使用的帐户名称列表。
用法
创建密钥文件
首先,确保 ~/.shell-secrets/
目录存在。这是存储加密文件的位置:
mkdir -p ~/.shell-secrets
现在使用 GPG 创建新的加密文件:
$ gpg --encrypt -r yourself@some.email.com --armor --output ~/.shell-secrets/foo.gpg
export FOO=E9yyQ7MApwoQHXBCIs7or5aQ9W
export BAR=lLvxSCbY4j+Kdn
...
^D
完成!
登录
要使用任何加密文件登录,只需调用 login
函数,并传入文件名(不带 .gpg
扩展名):
$ login foo
foo $ env
...
FOO=E9yyQ7MApwoQHXBCIs7or5aQ9W
BAR=lLvxSCbY4j+Kdn
...
环境变量已设置好可以使用,并且 SECRET_LOGIN
环境变量已更新,可供提示符使用。该脚本还包括对 .shell-secrets
目录中可用文件名的自动补全。
可以嵌套多个登录:
$ login foo
foo $ login bar
foo bar $
注销
每次使用 login
函数时,都会创建一个新的子 shell 进程。要从当前帐户注销,请调用 logout
或直接按 Ctrl+D
。
关于
加密环境变量