0

目前,我们的流程包括登录每个 *nix 服务器并手动更改每个服务器的密码。我的问题是,什么是自动化的好方法?我正在考虑可能有几种不同的方法来做到这一点,并希望其他人就他们的推荐、使用等提供意见。

我在想的一种方法是一个文本文件,其中包含需要更改密码的服务器列表和一个提示用户输入新密码的脚本,将其临时存储在脚本中,然后远程连接到每个服务器并运行命令。检查以确保服务器可访问或远程连接超时将是一个好主意。然后将输出输出到控制台,以便运行脚本的人可以看到哪些服务器成功,哪些没有。

我试图想出另一种完全自动化的解决方案,但想不出一种安全存储新密码的好方法。另外,进行一些用户交互并且必须手动启动脚本对我来说并不是什么大不了的事,因为我们一年只需要这样做 6 次。

任何想法、帮助、想法都会受到极大的欢迎。

4

2 回答 2

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:::

在我的脚本中,我在 :'s 处分解它并更新元素 [1],然后将数组连接回字符串并替换文件中的字符串。如果你愿意,你可以做不同的事情,特别是如果你知道旧值(你可以通过将它分解成一个数组来获得)。

我知道这个问题已经有几个月了,所以你可能已经弄清楚了,但我把它放在那里是为了让未来的谷歌人找到这个问题。

于 2010-07-13T17:32:11.737 回答
0

您应该计算您的服务器在密码上计算的任何散列,并以这种安全的散列形式发送密码,准备好放入/etc/shadow.

但是我不知道如何在实践中做到这一点。

于 2010-04-08T15:46:01.663 回答