如何验证 root 密码是否更改正确

如何验证 root 密码是否更改正确

/etc/shadow我有一个 OpsWare 任务,通过替换文件中的 root 密码哈希来更改大量服务器上的 root 密码。

我需要某种脚本,最好再次使用 OpsWare 运行,但我不想比较哈希值。我希望它运行某种su(或login) 命令并输入实际的密码字符串。我想这样做的原因是,在过去,我有过别人创建的哈希值,它没有正确加密并拒绝在大量服务器上进行 root 登录。

我正在寻找我可以实施的想法。expect我想到了,但由于它不是我们企业中的标准实用程序,因此需要在测试后立即安装和删除,这不是一个“快速”解决方案。

感谢想法建议。

答案1

有一个名为的实用程序sshpass允许您在命令行上提供密码作为选项。该工具可以编写脚本,以便它在多个主机上运行,​​甚至可以并行运行。安装sshpass在您的 Jumpbox 上,然后执行以下操作:

sshpass -p password ssh root@host 'hostname;date;id'

并将其嵌入到 shell 循环或其他方法(例如并行 ssh 或 clustersh)中,以便您在多个主机上运行它。

人们可能认为这是不安全的,但如果您从命令行运行它,那么您只需擦除 shell 历史记录,清除屏幕,就不会出现明文密码的痕迹。

答案2

sshpass -f[filename] 解析其中包含密码的文件 - 然后无需清除 bash 事务历史记录

从手册页:

-ffilename

密码是文件文件名的第一行。

相关内容