jos*_*ing 5 password openssl password-management passwd chef-solo
我正在阅读“可靠地部署 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` 运行可记忆/纯文本版本,这样您就不必存储密码的加密版本,并在每次需要输入密码时键入/粘贴。
这是唯一的好处吗?如果不是,其他的又是什么?
在#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 密码加密有如此糟糕的记录。(编辑:阅读下面的评论以获得更好的解释)