通过ssh更新RHEL服务器,无需root ssh访问

我现在在哪里我有一个要求设置PermitRootLogin为no为ssh。

我想用无密码login同时更新我的​​所有服务器,但是如果没有启用root帐户,是否有办法做到这一点?

在处理更新的服务器上创build一个脚本,然后在/ etc / sudoers中对其进行configuration,使其无需密码即可执行。

User_Alias UPDATEADMINS = user1, user2 Cmnd_Alias UPDATECMDS = /usr/local/bin/updatescript1, /usr/local/bin/updatescript2 Host_Alias UPDATEHOSTS = 10.10.1.0/24 UPDATEADMINS UPDATEHOSTS = NOPASSWD: UPDATECMDS 

很显然,确保更新脚本不能访问除root以外的任何人。 然后,您可以为您的更新用户设置SSH密钥,并通过SSH远程执行它:

 $ ssh [email protected] sudo /usr/local/bin/updatescript root 

在这个例子中,updatescript只是回应whoami输出。 如果您的脚本需要input,理解安全影响并正确清理input非常重要。

将PermitRootLogin设置为无密码。 然后,安装像clustersh这样的工具。 这样,您可以手动同时更新所有服务器。

或者,您可以投资实施puppet,这样可以很容易确保所有服务器上的所有内容始终保持一致(这意味着您可以同时在所有机器的某个特定时间安装更新),而且不需要rootlogin。 但需要一些时间来设置。

ssh与任何用户…从那里…要么su根…或设置该用户作为“sudoer”和sudo yum更新。