我正在寻找一个好的 ssh 密码/密钥设置,用于多台服务器的系统管理。
理想的解决方案是既舒适又安全,但是经过对这个问题的深思熟虑之后,似乎没有一个解决方案是可以接受的。
基本上我得出了以下两种设置:
每个服务器都有一个强(且唯一)的 root 密码。为了管理它们,我不再使用密码登录,而是将带密码的公钥添加到它们的授权密钥中。
我可以从任何计算机使用私钥/私钥密码组合登录所有这些网站。
问题:允许直接 root 登录。
另一个:
已禁用直接 root 登录。使用私钥进行相同设置以使用 su 权限登录用户帐户。以用户身份登录后,使用 su 以 root 身份登录(必须输入 root 密码)。
问题。检索每个服务器的 root 密码不太方便。更方便的是,使用一个用于所有 root 密码(考虑到不允许直接 root 登录)。
您认为哪种方法更好?您知道其他更好的设置吗?提前谢谢!
答案1
您是否考虑过简单地禁用 root 帐户,但允许 sudo?这样,每个管理员只需要知道自己的密码,所有访问都会记录到个人,并且密钥管理完全是可选的。
答案2
在每个服务器上为每个管理员提供自己的帐户,并让他们使用 sudo 而不是 su 来访问 root 限制的内容。然后,您可以使用公钥/私钥对或任何其他身份验证方法登录服务器。
答案3
切线相关,根据服务器数量、管理员数量以及所有管理员是否需要访问所有服务器,考虑使用配置管理系统,例如(无优先顺序)bcfg2、cfengine、lcfg 或 puppet。您可以从小处着手,管理管理员帐户和密钥以及使用 sshd_config 中的 AllowUsers 和 AllowGroups 指令限制 ssh 登录。
通常,您永远没有足够的时间来学习如何配置或部署 CM 系统,但如果您以 2-3 台机器为测试目标,并首先管理一些简单的东西(如 authorized_keys、resolv.conf 等静态文件),您会惊讶于您可以如此快速地实现它并准备好部署到更多系统。随着更多系统受到中央管理,您还会对出现的细微配置错误感到惊讶。
这与设置根访问权限有什么关系?很简单:一旦您从中央系统管理配置,管理密钥和访问权限就会更快、更容易。审计得到简化,这对您可能重要,也可能不重要。此外,如果您将 CM 系统与 Kickstart 或 Jumpstart 等自动构建系统结合使用,则可以大大减少备份开销和服务器部署时间。访问控制是配置管理的一个重要方面;有时它有助于一窥全局。
答案4
除了 sudo 解决方案之外,您还可以使用公钥身份验证和 ssh-agent。您甚至不必每次都输入密码来 ssh 连接服务器。请参阅这里