目前,我们的流程包括登录每个* nix服务器并手动更改每个服务器的密码。我的问题是,什么是自动化的好方法?我想可能有几种不同的方法来做这件事,并希望从他人那里得到他们推荐,使用等方面的意见。
我想到的一种方法是一个文本文件,其中包含需要更改密码的服务器列表以及提示用户输入新密码的脚本,将其临时存储在脚本中,然后远程连接到每个服务器并运行命令。进行检查以确保服务器可访问或远程连接超时是个好主意。然后输出到控制台,以便运行脚本的人可以看到哪些服务器成功,哪些服务器不成功。
我试图想到另一个完全自动化的解决方案,但想不出安全存储新密码的好方法。此外,对我来说,进行一些用户交互并且必须手动启动脚本对我来说并不是一件大事,因为我们每年只需要执行6次这样的操作。
任何想法,帮助,想法都会受到很大的限制。
答案 0 :(得分:2)
openssl passwd -1 $rootpw
$ rootpw保存将作为root密码的字符串。
这将输出一个加密的字符串,您可以将其放入文件或其他任何内容。我在一个脚本上使用它来设置从数据库配置的虚拟服务器实例。我在通过网络发送之前计算此哈希,因此设置服务器的脚本可以使用此哈希而不必将其发送为纯文本。
要回答您的问题,每个服务器会稍微不同地计算哈希并导致不同的哈希值,但所有这些哈希值都等同于相同的密码。您可以使用这些哈希中的任何一个,并且在任何服务器上使用它们时功能相同,即使哈希的实际内容不同。
例如,我对foobar进行了哈希处理,结果如下:
rootpw=foobar
openssl passwd -1 $rootpw
$1$6pXamKGD$TKQqON1prArop7DpLOyAk1
openssl passwd -1 $rootpw
$1$4A4Mn16f$P7ap2AqNMRK8m72bG/Bve0
openssl passwd -1 $rootpw
$1$DyhsWEMX$i2wH6JpAqoHNFZ0YOBVHj/
openssl passwd -1 $rootpw
$1$m27FIj5e$LZPxVniAeUoZcuUoNHK8c/
openssl passwd -1 $rootpw
$1$qdX0NKm1$45rzxUj..LCJwWB/.fwGH0
每个哈希都是不同的,即使在同一台机器上计算,但它们中的任何一个都可以用来等同于任何机器上的密码'foobar'。
所以只需打开/ etc / shadow并将其粘贴到您找到该行的位置:
root:$1$qdX0NKm1$45rzxUj..LCJwWB/.fwGH0:14415:0:99999:7:::
在我的脚本中,我在:和更新元素[1]中将其爆炸,然后将数组连接回字符串并替换文件中的字符串。如果需要,您可以采用不同的方式,特别是如果您知道旧值(可以通过将其扩展到数组中来获得)。
我知道这个问题已经有几个月了,所以你可能已经把它弄明白了,但我正在把它放在那里,以便将来的任何一位googler出现并找到它。
答案 1 :(得分:0)
您应该计算您的服务器在密码上计算的任何哈希值,并以此安全的散列形式发送密码,准备放入/etc/shadow
。
但我不知道在实践中该怎么做。