我在这里看到最奇怪的事情。 我有几台RHEL3,4和5台机器,它们通过Kerberos和一个Active Directoy域控制器作为KDCvalidation用户凭证。
这适用于我的所有用户,保存一个。 有一个帐户无法login到RHEL3 Linux机器,并在那里生成以下错误:
May 31 13:53:19 mybox sshd(pam_unix)[7186]: authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.0.0.1 user=user May 31 13:53:20 mybox sshd[7186]: pam_krb5: TGT verification failed for `user' May 31 13:53:20 mybox sshd[7186]: pam_krb5: authentication fails for `user'
其他账户,像我自己的,是好的:
May 31 17:25:30 mybox sshd(pam_unix)[12913]: authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.0.0.1 user=myuser May 31 17:25:31 mybox sshd[12913]: pam_krb5: TGT for myuser successfully verified May 31 17:25:31 mybox sshd[12913]: pam_krb5: authentication succeeds for `myuser' May 31 17:25:31 mybox sshd(pam_unix)[12915]: session opened for user myuser by (uid=0)
正如你所看到的,TGTvalidation失败。 这只发生在这个特定的帐户,而不是任何其他。
失败的useraccount的密码已被重置,我检查了Active Directory中的两个用户对象,但我没有看到任何exception。
如果我将失败的用户帐户login到RHEL4或5框中,则没有问题,因此它必须是RHEL3特定的,但是只有一个帐户遭受这种情况,这暗示我。 也许有人看过这个?
你可以作为一个工作和非工作的用户,Unix的箱子kinit
? 如果是这样的话, klist
对每个人说些什么?
完成之后,尝试使用其中一个票据,然后查看每个klist显示的内容。
如果kinit
工作,并且你得到的门票工作(例如再次ssh'ing回到箱子),那么确实是奇怪的,我不能确定接下来去哪里,而不能触摸框。
我会无耻地回答我自己的问题,因为我们find了答案。 未能通过身份validation的用户对象中有某种证书,与其他用户对象相比,该对象相当大。
作为Active Directory组件的Kerberos具有名为“MaxTokenSize”的属性。 默认情况下,它被设置为12.000字节。 在旧版本的Active Directory中,它是8.000字节。 大多数时候你看到有人遇到麻烦,就是当他们把用户放在太多的组里(70到100个组中的某个地方)。 根据这篇TechNet文章 ,让用户对象这么大导致MaxTokenSize对于authentication所需的缓冲区来说太小了。
我无法find与运行Linux的客户端有关的这个问题的任何消息来源,但是我发现这个网站关于OpenAFS(使用Kerberos), 这个网站谈到了使用AD的Kerberos时过大的票据。
长话短说,我遇到的麻烦的用户并不是很多,但是据说他的LDAP对象里有一个很大的屁股证书,这使得它非常大。
删除证书足以在RHEL3上重新启用Kerberos身份validation。