预认证失败:获取初始凭据时密码读取中断问题解决分享
解决Kerberos ktutil生成keytab时的「预认证失败:获取初始凭据时密码读取中断」错误
我之前在CentOS和MacOS Big Sur环境下,搭配Cloudera Hadoop集群使用Kerberos时,碰到过完全一样的问题。当时想通过ktutil工具生成user.keytab文件来实现无密码续订KRB票据,折腾了好一阵才找到解决方案,现在把经验分享出来。
环境信息
- 操作系统:CentOS Linux、MacOS(Big Sur)
- 集群:Cloudera Hadoop Distribution
- 工具:Kerberos
问题详情
我尝试用ktutil创建keytab,执行以下命令时触发错误:
ktutil: addent -password -p user@DOMAIN.LOCAL -k 1 -e rc4-hmac
错误提示:
预认证失败:获取初始凭据时密码读取中断
解决方案
这个问题的核心原因是直接通过ktutil的addent -password命令生成keytab时,部分环境下会因为预认证流程不完整或者终端输入异常导致密码读取中断。这里提供两种可靠的解决办法:
方法一:通过kadmin直接从KDC生成keytab
这是最稳妥的方式,直接从Kerberos KDC服务器生成keytab,完全绕开本地ktutil的预认证问题:
- 用具有管理员权限的Kerberos principal登录kadmin:
kadmin -p admin@DOMAIN.LOCAL - 在kadmin交互界面执行生成keytab的命令:
kadmin: ktadd -k user.keytab user@DOMAIN.LOCAL - 退出kadmin:
kadmin: quit
生成的user.keytab文件即可正常用于无密码续订票据。
方法二:调整ktutil的操作流程
如果必须用ktutil生成,建议先确保Kerberos票据获取正常,再执行addent操作:
- 先通过kinit验证用户密码并获取初始票据:
kinit user@DOMAIN.LOCAL - 进入ktutil交互界面,添加凭据时优先使用强加密类型,再补充rc4-hmac(输入密码时注意避免特殊字符导致终端读取异常):
ktutil ktutil: addent -password -p user@DOMAIN.LOCAL -k 1 -e aes256-cts-hmac-sha1-96 ktutil: addent -password -p user@DOMAIN.LOCAL -k 1 -e rc4-hmac ktutil: wkt user.keytab ktutil: quit
这样操作能确保预认证流程正常完成,避免密码读取中断的问题。
内容的提问来源于stack exchange,提问作者Alper t. Turker
相关产品推荐
相关产品推荐

