我们使用Puppet来configuration我们的服务器,但是为它们创buildKerberos密钥表是一个手动过程。 当机器第一次启动时,我们希望自动生成Unix机器的Kerberos密钥表。
这里的各种教程(比如这个 )解释了新机器本身如何获得keytab,但是这需要Samba和其他工具,我们希望避免安装。
现有的Unix机器能否从AD服务器请求另一个 Unix机器的密钥表? 怎么样? 我们是否需要编写代码(也许,使用Samba4的Python API – 目前文档很less),还是可以通过现有的工具来实现?
好的,首先感谢@ Jason-Walker在kclient的指针 – 一个典型的Sun公司的实现(function性,但丑陋),在Ksh中实现了helper-utilites。显然,join一个域包括创build主机的入口标准LDAP – Sun的脚本使用OpenLDAP中的ldapsearch , ldapmodify和ldapadd 。
一旦主机被脚本注册(与@ Jason-Walker的评估相反,这可以从域中的任何主机完成),它会调用ksetpw帮助器实用程序来生成密钥表。 我甚至差不多完成了将它移植到Linux和BSD,当我来到adcli ,已经完全,我们需要什么,并作为一个RPM。 我甚至用纯粹的感谢创造了一个FreeBSD的实用工具 (有Heimdal支持)。
有很多的欣喜。
这样做不会有任何透明的方式。 主机密钥表代表主机密钥的副本 – 仅为Kerberos服务器(Active Directory域控制器)和客户端所知的密码。 在正常情况下,密钥表是在客户端join域时创build的(当时用户向域进行身份validation并为工作站创build一个新密码)。 一旦join,机器(默认)每30天更新一次密码。
Samba客户端可以生成密钥表,但是通过使用“net join”命令对用户帐户进行身份validation来完成。 validation用户的密码用于创build初始主机密钥。
其他可以从Linux客户端“join域”并创build初始密钥(和匹配的密钥表文件)的程序包括戴尔身份validation服务(以前称为Quest身份validation服务,以前称为Vintela身份validation服务,并且仍称为“input”)。 同样地; 和Centrify。
要执行初始连接,客户端需要使用授权创build计算机对象的域帐户,将工作站join到域,或者重置现有域成员的计算机帐户密码来向域进行身份validation。 用户帐户可能使用密码进行validation,或使用现有的用户密钥表文件进行validation。
参考实现MIT Kerberos可以创buildkeytab文件,但据我所知,不能在域上创build一个新的计算机帐户。
编辑:如果你的发行包含“kclient”,那应该做你想要的; 您仍然需要将凭证embedded到您的连接脚本中,以最初对域进行身份validation。 请参阅https://docs.oracle.com/cd/E36784_01/html/E36871/kclient-1m.html和