我正在使用
realmd
加入活动目录域,并且使用命令时成功:
sudo realm join -U [email protected] domain.com
它提示我输入密码,并且有效。
我现在正在尝试使该过程自动化。我想运行上述命令(或其某些变体)而不提示输入密码。
我尝试创建 Kerberos 密钥表。我运行了
kinit
命令,我可以看到用户使用 klist
。
来自klist
的有用数据:
Default principal: [email protected]
Service principal: krbtgt/[email protected]
我运行了命令
sudo realm join
希望它能够读取密钥表,但我得到以下信息:
$ sudo realm join
Password for Administrator:
系统提示我输入管理员密码,该密码不是我的用户。根据我在网上找到的资料,如果已经设置了 kerberos,它不应该提示我输入密码。我觉得
realmd
甚至没有读取初始化的用户。你知道我该如何解决这个问题吗?我还应该在 kerberos 或 realmd 配置级别做其他事情吗?
管理员凭据仅用于创建计算机帐户。因此,不要将管理员凭据分发到每台计算机(这是有风险的),而是在本地系统上使用
adcli
来预先创建计算机帐户 - 这允许您使用 --one-time-password
或 --no-password
加入。
但是,如果您确实想使用密钥表,请记住 Kerberos 票证缓存通常是针对每个用户的,而 sudo 的全部目的是切换到不同的用户。所以仅仅
klist
起作用还不够;您还需要 sudo klist
才能工作 – 这可能需要指定 KRB5CCNAME=
以便 klist/realm 在不同 UID 下运行时可以找到您的 ccache。
sudo KRB5CCNAME=FILE:/tmp/krb5cc_1234 klist
sudo KRB5CCNAME=FILE:/tmp/krb5cc_1234 realm join
默认缓存位置显示在您的
klist
中。如果您的操作系统默认使用“KEYRING”缓存,您首先需要手动切换到基于文件的缓存,因为密钥环缓存不能跨 UID 使用。
export KRB5CCNAME=FILE:/tmp/krb5cc_admin
kinit -k -t admin.keytab
sudo KRB5CCNAME="$KRB5CCNAME" klist