在服务器上设置 SSH 身份验证时出现 Kerberos 密钥表文件的原因是什么?

What is the reason for a Kerberos keytab file when setting up SSH authentication on a server?

我对 Kerberos 并没有多少经验,但我正在尝试使用 sssd 在我的一台服务器上使用 AD 设置 SSH 身份验证。我已按照 sssd 文档 here 上的说明进行操作并使其正常工作,但我很难理解为什么我需要一个 keytab 文件来进行设置?

我最近阅读了一些有关 Kerberos 的资料,看来您只需要在服务器需要在没有用户交互的情况下向 AD 进行身份验证或需要实施 SSO 时在服务器上创建密钥表文件 (当用户请求该服务的票证时)。

我只是希望我的用户在通过 SSH 登录时输入他们的用户名/密码,并让 sssd 针对 AD 验证该用户并为他们创建 TGT 票证。有趣的是 - 即使我没有设置 sssd 并且只设置了 kerberos 端,我也可以 运行 kinit 并且我得到了一张票!

所以我的问题是:我可以使用 sssd 设置 SSH 身份验证而不在服务器上生成密钥表文件吗?如果不是那为什么不呢?

您在主题行“在服务器上设置 SSH 身份验证时使用 Kerberos 密钥表文件的原因是什么?”可归结为单行答案:它通过将入站 Kerberos 服务票证解密为 "tell" 用户身份,允许对目录服务器进行 Kerberos 单点登录身份验证。至于你的另一个问题,“我可以使用 sssd 设置 SSH 身份验证而不在服务器上生成密钥表文件吗?”,答案是肯定的,你可以。但是,只要您连接到 SSH 服务,系统就会提示您输入用户名或密码,除非您选择将密码缓存在您可能用于连接的任何 SSH 实用程序中。但是,以这种方法缓存密码不被认为是 "single sign-on".

如需更多参考,您可以在 Microsoft Technet 上阅读我关于 Kerberos keytabs 的文章的更多信息:Kerberos Keytabs – Explained。我经常根据我在这个论坛上看到的问题返回并编辑它。