我有一个用于创建 keytab 文件的 bash:
#!/bin/bash
user="username"
pass="password"
printf "%b" "add_entry -password -p [email protected] -k 1 -e aes128-cts-hmac-sha1-96\n$pass\nadd_entry -password -p [email protected] -k 1 -e aes256-cts-hmac-sha1-96\n$pass\nadd_entry -password -p [email protected] -k 1 -e arcfour-hmac-md5-exp\n$pass\nadd_entry -password -p [email protected] -k 1 -e des3-cbc-sha1\n$pass\nadd_entry -password -p [email protected] -k 1 -e des-cbc-md5\n$pass\nwrite_kt $user.keytab" | ktutil
但无法连接到 LDAP 服务器并出现此错误:
kinit:获取初始凭据时预身份验证失败
当我使用 kinit -V $user 时,没问题,我尝试多次从命令行创建 keytab,但在 keytab 登录时遇到相同的错误
aes128
和
aes256
密码套件使用 salted PBKDF2 从密码中派生密钥。当您 kinit 时,将从 KDC 检索盐,但是当您手动创建密钥表时,将使用默认名称+领域盐 – 这在大多数情况下都可以工作,但如果用户帐户已被重命名,则将不起作用其现有密钥仍将使用旧盐(基于其旧名称),至少在密码更改之前如此。 要处理这种可能性,请使用
-f
选项
add_entry
。
add_entry -password -p [email protected] -k 1 -e aes128-cts-hmac-sha1-96 -f
(arcfour-hmac
不使用盐;它处理直接 NTLM 哈希,所以它不存在这个问题 – 但另一方面,arcfour-hmac 是 RC4 的另一个名称,现在你可能不应该正在使用它。我不记得
des3
和
des
密码套件使用哪种盐,但我真的怀疑你需要其中任何一个 - Windows根本不支持
des3
,仅支持
des
和单DES在小时内即可破解,因此您也不想使用它。尽管如此,无论哪种方式,
-f
选项都会对所有密码套件执行正确的操作。)
massive printf,而是使用<<
heredoc:
ktutil <<EOF
add_entry -password -p [email protected] -k 1 -e aes128-cts-hmac-sha1-96
$pass
add_entry -password -p [email protected] -k 1 -e aes256-cts-hmac-sha1-96
$pass
write_kt $user.keytab
EOF
或者,您可以使用 { }
或
( )
一次传输多个命令输出,而不是单个命令:
{
for etype in {aes128,aes256}-cts-hmac-sha1-96; do
echo "add_entry -password -p [email protected] -k 1 -e $etype"
echo "$pass"
done
echo "write_kt $user.keytab"
} | ktutil