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

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

我目前所在的地方需要将 ssh 的 PermitRootLogin 设置为 no。

我想通过无密码登录同时更新我的​​所有服务器,但是如果没有启用 root 帐户,有什么办法可以做到这一点吗?

答案1

在服务器上创建一个处理更新的脚本,然后在 /etc/sudoers 中对其进行配置,以允许无需密码即可执行它。

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。如果您的脚本需要输入,那么了解安全隐患并正确清理该输入就极其重要。

答案2

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

或者,您可以投资实施 puppet,这样可以轻松确保所有服务器上的所有内容始终相同(这意味着您可以在特定时间同时在所有计算机上安装更新),并且不需要 root 登录。不过确实需要一些时间来设置。

答案3

使用任何用户通过 ssh 登录...从那里...要么 su 为 root...或者将该用户设置为“sudoer”并使用 sudo yum update。

相关内容