我想更改大约 20 台 Linux 服务器上的 root 密码。主要是 CentOS 和 Ubuntu。
因此我研究了 Puppet、chef 和 cfengine,但我真的不知道他们是否可以做到这一点,或者他们是否会为这项任务而过度努力?
有谁能建议如何/etc/shadow
在多台 Linux 服务器上编辑配置文件等吗?
答案1
密码可能是你正在寻找的
答案2
usermod -p '_hash_' root
你可以直接运行命令哈希是适用于该系统的密码哈希值。因此,类似这样的命令usermod -p '$1$aNwwp0wS$RzSqCt3ntYs.V2TxcXheA' root
将使 root 拥有密码password
。
如果您想以正确的方式执行此操作,您还需要为每个系统生成唯一的盐和唯一的哈希。如果已安装,您可以使用它mkpasswd
来达到此目的。
$ # create a md5 password has for 'password'
$ echo 'password' | mkpasswd -s -m md5
$1$mJrKn6xs$NTfRbrqbaVzsqcPzyXXt3/
PS 我个人更喜欢将 root 设置为禁用密码,然后使用基于 ssh 密钥的身份验证来访问 root 帐户。您应该能够非常轻松地为自己构建一个脚本来自动更新 root 文件authorized_keys
。根据您的 SSH 日志级别,您还将看到使用哪个密钥访问 root 帐户,这可能有助于追踪谁破坏了某些东西。
答案3
你不需要。真的,不要直接编辑 /etc/shadow。对于 20 台服务器,我可能只会登录并使用 passwd 更改 root 密码。
如果你必须经常这样做,你可以使用预计并将其放入循环中,例如:
for i in `cat <file_with_server_names>`
do
ssh <user>@$i
<expect stuff here>
done
抱歉,这个脆弱的伪代码我已经大约 6 个月没有用过了。
root 是一个棘手的问题,我个人不喜欢将它绑定到任何外部服务,以防网络/服务出现故障。通常我会建议 LDAP 或 AD 集成(如果您已经有一个 AD 域!)
答案4
如果您已为所有系统建立了 ssh 密钥交换,我会考虑使用基本循环 ssh 到每个系统并更新密码。如果没有,则单独 ssh 到每个系统并更改密码可能更有意义。20 个系统并不是一个很大的数字。