我正在阅读 ”可靠地部署 Rails 应用程序“
关于定义由 Chef 设置的用户,其中规定:
“接下来我们需要定义用户,在 data_bags/users 里面将文件 deploy.json.example 复制到 deploy.json。
使用以下命令为您的部署用户生成密码:
openssl passwd -1 "plaintextpassword"
并相应地更新 deploy.json。”
我的问题是, 的目的是什么openssl passwd
? 它只是为了生成一个强密码吗? 如果我输入随机字符,效果会一样好吗?
那么,我的“实际”密码是什么?纯文本版本还是加密版本?我需要将两者的副本都保存到密码管理器中吗?
更新:
是的,我读过手册。是的,我知道它会生成一个 md5 加密版本的密码。我的问题更多的是关于你为什么要使用它,而不是使用你自己编写的非常安全的随机字符串(或用密码生成器生成)。
我能想到的一个好处是,您可以输入一个容易记住的密码,并在openssl passwd -1 "plaintextpassword"
每次需要输入时运行它。因此,您可以同时拥有一个容易记住的密码和一个安全的随机密码。每次需要时通过“openssl passwd -1”运行容易记住的/纯文本版本,这样就不必存储密码的加密版本,也不必在每次需要输入密码时键入/粘贴它。
这是唯一的好处吗?如果不是,其他好处是什么?
答案1
答案2
在 #chef IRC 频道上聊过之后,我最终需要知道的是这些。其中大部分其实都是外围信息,而不是openssl passwd
具体信息,但无论如何...
Chef 用户标准adduser
命令 (http://linux.die.net/man/8/adduser)添加用户。该命令接受密码已加密- 因此您需要openssl passwd -1 "plaintextpassword"
在您的 中存储一个加密版本(由 生成)data_bags/users/deploy.json
。
因此,您的纯文本密码是“真实”密码。但由于该adduser
命令要求您传递的密码已经加密,因此您需要将加密版本存储在data_bags/users/deploy.json
这很有效,因为您肯定不想在其中存储纯文本密码data_bags/users/deploy.json
!
回到我最初的问题:
我的“实际”密码是什么?纯文本版本,还是加密版本?
纯文本版本才是你真正的版本。
我是否需要将两者的副本都保存到我的密码管理器中? 不会。您只存储纯文本版本。每次登录时都会使用该版本。然后系统会加密该版本,并将其与为您的帐户存储的加密版本进行比较。
openssl passwd 有什么好处/目的?
并没有什么“好处”。它只是因为adduser
命令需要它给出的密码已经加密而需要。
说了这么多,显然最好根本不要存储密码data_bags/users/deploy.json
,而只允许通过 SSH 密钥访问。
存储密码的加密版本甚至都不是一个好习惯,data_bags/users/deploy.json
因为 Linux 密码加密的记录很差。(编辑:阅读下面的评论以获得更好的解释)