初始化时加载 .profile 中的秘密内容 bash/zsh
Loading secret content in .profile when initializing bash/zsh
我想在 shell 初始化过程中包含一个带有秘密 Api 密钥的 environment variable
。但我不希望在纯文本文件中公开该环境变量。
所以,我想知道是否有内置机制或脚本来执行此操作。
我正在考虑使用 git-crypt 加密 git 存储库。并且在初始化(在 .profile 上)时解密它,获取它,然后将其加密回来,使其他用户无法读取。
几个 sh
函数并使用 gpg 实现了:
SECRETS_FILE=~/.secrets.sh
GPG_ID=yourgpgid@mydomain.com
profile_decrypt (){
gpg -d ${SECRETS_FILE}.asc > ${SECRETS_FILE} # Decrypt file
rm ${SECRETS_FILE}.asc
}
profile_encrypt () {
gpg -ea -r ${GPG_ID} ${SECRETS_FILE} # Encrypt file using ascii output
rm ${SECRETS_FILE}
}
profile_decrypt
source $SECRETS_FILE
profile_encrypt
其中 ~/.secrets.sh
包含:
export API_KEY=<SECRET API KEY>
在 .profile
上包含此函数会在每次加载终端时解密、导出变量并将它们加密回来。
我想在 shell 初始化过程中包含一个带有秘密 Api 密钥的 environment variable
。但我不希望在纯文本文件中公开该环境变量。
所以,我想知道是否有内置机制或脚本来执行此操作。
我正在考虑使用 git-crypt 加密 git 存储库。并且在初始化(在 .profile 上)时解密它,获取它,然后将其加密回来,使其他用户无法读取。
几个 sh
函数并使用 gpg 实现了:
SECRETS_FILE=~/.secrets.sh
GPG_ID=yourgpgid@mydomain.com
profile_decrypt (){
gpg -d ${SECRETS_FILE}.asc > ${SECRETS_FILE} # Decrypt file
rm ${SECRETS_FILE}.asc
}
profile_encrypt () {
gpg -ea -r ${GPG_ID} ${SECRETS_FILE} # Encrypt file using ascii output
rm ${SECRETS_FILE}
}
profile_decrypt
source $SECRETS_FILE
profile_encrypt
其中 ~/.secrets.sh
包含:
export API_KEY=<SECRET API KEY>
在 .profile
上包含此函数会在每次加载终端时解密、导出变量并将它们加密回来。