Bash 中的密码管理

Password management in Bash

我的 .bashrc 文件中有一些函数用于在远程网站上发出备份命令。现在,用户名和密码字段在函数定义中以纯文本形式存储为函数局部字符串。有更好的方法吗?

到目前为止,我的想法是将密码的散列版本放入只有我的用户帐户具有读取权限的文件中,运行在其上使用去散列命令行函数并存储普通文件内存中的文本结果,使用它,然后清除它。

是否有 better/safer 甚至事实上的通用方法来完成此操作?

谢谢。

我可以想到两种方法来安全地解决这个问题。

1。 GPG

key=value 格式(shell 基本上可解析)保存一个包含密码的 GPG 加密文件,每行一个。如:

foo_pass='bar'
pop_pass='tart'

当您想要访问它们时,只需执行以下操作:

eval "$(gpg -d /path/to/file | grep '^foo_pass=')"
SUPERSECRETPASSWORD="$foo_pass" somecmd

如果命令需要密码作为参数(这是不安全的),只需调整最后一行。

2。密钥环守护进程

根据您的 OS,您可能可以访问可以存储密码的密钥环。在 linux 上,这可能是 gnome keyring daemon。那么这个密钥环可能可以通过 CLI/script 以某种方式访问​​。 例如,gkeyring 用于 gnome 密钥环守护程序。