我有一堆 Linux 服务器和三台 Windows Server 2008 R2。我需要一个解决方案,使每台服务器都能够无密码 SSH 登录到所有其他服务器。我可以通过在所有机器上生成密钥并将其分发到所有其他服务器来实现这一点,但这种解决方案的可扩展性很低。每当我添加一台服务器时,我都必须将其密钥分发给所有服务器。因此,我需要一个解决方案来集中管理密钥和对所有服务器的访问。
KERBEROS 对我来说是可行的方法吗?有人知道 Linux 上任何类似或更好的解决方案吗?谢谢。
答案1
Kerberos 是最佳选择,但您可能不想手动设置。它有很多活动部件,很容易出错。
相反,您应该设置一个域并将所有计算机加入该域。
您有三个选项可以为此环境设置域:
- FreeIPA。Linux 对此提供了很好的支持,尤其是 Red Hat 衍生的发行版,尽管其他发行版也提供此功能。如果所有或几乎所有计算机都运行 Linux,这是您的最佳选择;只需稍加操作即可让少数 Windows 计算机加入域。
- Active Directory。基于 Windows 的经典域控制器,如果大多数计算机都运行 Windows,那么它是您的最佳选择。
- 两个都FreeIPA 和 Active Directory。如果您拥有混合环境,您可能希望运行 FreeIPA 来管理您的 Linux 系统,并运行 Active Directory 来管理您的 Windows 系统,并在它们之间建立适当的跨域信任。
- Samba 4 假装是 Active Directory。您经常会在混合环境中看到这种情况,或者在有人未批准 Windows 许可证预算来设置 AD 的地方。应仔细评估它,因为它可能不支持现代 AD 功能级别的所有功能。
在所有情况下,底层都将使用 Kerberos;但您通常不必担心细节,因为它们会为您处理。
答案2
Kerberos 是实现此目的的最佳选择。几乎所有 Linux 发行版、Windows(自 2000 年以来)和 Mac(自 10.2 以来)均支持 Kerberos。如果您已经拥有现有的 Windows 域基础架构,则设置起来相对简单。如果您有,只需在 Google 上搜索发行版的名称和版本,然后“kerberize”即可。
答案3
如果你确实要使用活动目录,那么可能值得看看集中化,特别是免费的 express 版本,它使无密码 SSH 登录变得非常简单。它使用 Kerberos 作为底层,但无需亲自配置。