/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
密码是文件文件名的第一行。