如何在许多Linux服务器上编辑/ etc / shadow?

我想在大约20台Linux服务器上更改root密码。 主要是CentOS和Ubuntu。

所以我看了木偶厨师和cfengine,但我真的不知道他们是否可以这样做,或者他们是否会为了这个任务而杀人?

有没有人有build议如何编辑许多Linux服务器上的configuration文件, /etc/shadow等等?

pssh可能是你正在寻找的

您可以运行命令usermod -p '_hash_' root其中hash是适合该系统的密码的哈希值。 所以像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密钥的身份validation来访问root帐户。 你应该能够很容易地build立自己的脚本来自动更新根authorized_keys文件。 根据您的SSH日志级别,您还将看到使用哪个密钥访问root帐户,这可能有助于查明谁破坏了某些东西。

你没有。 没有,不要直接编辑/ etc / shadow。 对于20台服务器,我可能只需login并使用passwd更改root密码即可。

如果你经常这样做,你可以做什么就是使用Expect,并把它放在一个循环中:

 for i in `cat <file_with_server_names>` do ssh <user>@$i <expect stuff here> done 

对不起,大约6个月,我没有使用期望的伪装代码。

根本是一个棘手的问题,我个人不喜欢把它绑定到任何外部服务作为一个退步计划,以防networking/服务中断。 通常我会build议LDAP或AD集成(如果您已经有一个AD域!)

木偶可以pipe理用户(和其他许多事情)。 我会热烈推荐任何pipe理员与超过3个服务器集成傀儡到他们的环境。 puppetlabs.com上的wiki有很多文章,可以帮助你快速起床和跑步。 这些优点绝对值得你花时间。 考虑一下写这段代码:

 User {"sandra": ensure => present, group => ["sysadmin","dba"] } 

…并在给定时间内将其应​​用到许多服务器上。

是的,不要用手编辑你的影子文件:)

也有类似cluster-ssh的软件包,但根据我的经验,虽然有用,但使用这种types的软件的工作stream程对3-4台以上的服务器来说变得不舒服,这只是屏幕上的实际情况。 我甚至没有谈论由于服务器文件系统布局的不同而出现的各种问题(比如再见标签填写),已安装的软件包等

如果你有所有的系统build立SSH密钥交换,我会考虑一个基本的循环ssh到每个系统并更新密码。 如果不是的话,单独ssh到每个系统并更改密码可能更有意义。 20个系统并不是那么大。

看看sshpass 。 你可以通过循环访问关键字是IP地址来实现,值是对应的密码。

密码可以更改为:

 passwd <<EOF ch4ng#m3 ch4ng#m3 EOF 

这样做后,你应该清除历史。