Step1-KDC服务初始化安装Ubuntu
温馨提示
本文内容在 Ubuntu 22.04 系统 下完成测试,相关系列系统在配置路径与命令格式上基本一致。 如在部署中遇到问题,可联系作者共同探讨或反馈。 👉 联系入口在此页 (opens new window)
# 一、前置准备与安装 krb5 服务组件
Kerberos 的核心是 KDC(Key Distribution Center),相当于整个安全体系的“签发机构”。 任何服务、主机或用户要访问受保护的资源,都必须先通过它来获取凭证(Ticket)。
为什么要先部署 KDC?
Ambari 集群启用安全认证时,底层所有 Hadoop 组件(如 HDFS、YARN、Hive)都会与 KDC 通信。
如果 KDC 配置错误,后续 Ambari 的 Enable Kerberos Wizard 无法完成配置推送,整个集群会陷入半认证状态。
# 1. 安装核心包
sudo apt update
sudo apt install -y krb5-kdc krb5-admin-server krb5-user
2

这三个包的作用如下:
| 软件包 | 作用说明 |
|---|---|
| krb5-kdc | 提供 KDC 服务核心功能 |
| krb5-admin-server | 提供管理端 kadmind 服务 |
| krb5-user | 客户端命令行工具,如 kinit、klist、kdestroy 等 |
小贴士:Rhel 系列的包名区别
在 Rhel相关系统中,对应的安装命令为:
yum install -y krb5-server krb5-libs krb5-workstation
路径相同,但配置文件位于 /var/kerberos/krb5kdc
。可以参考Step1-KDC服务初始化安装-Ubuntu
# 二、修改 krb5.conf —— 定义安全域与服务端信息
KDC 的核心配置位于 /etc/krb5.conf,它定义了客户端、服务端、日志等信息。
我们需要对默认模板进行自定义修改。
vim /etc/krb5.conf

# 1. 重点修改项
[libdefaults]
default_realm = TTBIGDATA.COM
[realms]
TTBIGDATA.COM = {
kdc = dev1
admin_server = dev1
}
2
3
4
5
6
7
8
# 2. 修改说明
default_realm 定义默认认证域(Realm),必须使用大写字母。 建议使用公司或团队的域名缩写,例如:
TTBIGDATA.COM。kdc 指定 KDC 服务器主机名。若使用 IP 地址,则必须与
/etc/hosts一致。admin_server 指定 Kerberos 管理服务(
kadmind)所在主机,一般与 kdc 同机。
注意
不要保留示例配置 EXAMPLE.COM,否则后续 Ambari 推送配置时会报错:
Cannot connect to KDC for realm EXAMPLE.COM
# 3. 完整配置示例
[libdefaults]
#renew_lifetime = 7d
forwardable = true
default_realm = TTBIGDATA.COM
ticket_lifetime = 24h
dns_lookup_realm = false
dns_lookup_kdc = false
default_ccache_name = /tmp/krb5cc_%{uid}
#default_tgs_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5
#default_tkt_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5
[logging]
default = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
kdc = FILE:/var/log/krb5kdc.log
[realms]
TTBIGDATA.COM = {
admin_server = dev1
kdc = dev1
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
建议
- 若集群中有多台 KDC,可在
realms中添加多条kdc = hostX。 - 若 DNS 配置完善,可使用 FQDN(我的主机名就叫
dev1所以我填这个,可以自己hostname查看)以避免主机名解析问题。
# 三、创建 KDC 数据库(核心初始化)
执行以下命令以创建 KDC 主数据库:
kdb5_util create -s

系统将提示你输入并确认密码,该密码为 KDC 主密钥(Master Key), 与后续登录管理员账户无关,但请务必妥善保存,丢失后数据库将无法恢复。
常见问题
- 命令未找到:请确认
krb5-server安装成功; - 权限不足:需以 root 身份运行;
- 数据库路径不存在:默认路径
/etc/krb5kdc/。
创建完成后,会生成以下文件:

drwx------ 2 root root 4096 11月 4 06:39 ./
drwxr-xr-x 132 root root 12288 11月 4 07:28 ../
-rw------- 1 root root 78 11月 4 01:12 .k5.TTBIGDATA.COM
-rw-r--r-- 1 root root 26 11月 4 01:16 kadm5.acl
-rw------- 1 root root 154 11月 4 02:52 kadm5.keytab
-rw-r--r-- 1 root root 508 11月 4 01:19 kdc.conf
-rw------- 1 root root 78 11月 4 01:26 stash
root@dev1:/etc/krb5kdc# pwd
/etc/krb5kdc
root@dev1:/etc/krb5kdc#
2
3
4
5
6
7
8
9
10
# 四、启动并设置服务自启
sudo systemctl start krb5-kdc
sudo systemctl start krb5-admin-server
sudo systemctl enable krb5-kdc
sudo systemctl enable krb5-admin-server
2
3
4
执行完成后,可通过以下命令检查状态:
sudo systemctl status krb5-kdc
sudo systemctl status krb5-admin-server
2
若使用 Rhel
服务名称略有不同:
systemctl start krb5kdc kadmin
# 五、创建管理员账号与访问控制
执行以下命令创建 KDC 管理员账户:
kadmin.local -q "addprinc admin/admin"

输入密码后,系统会生成 Principal:
Principal "admin/admin@TTBIGDATA.COM" created.
此账户用于登录 kadmin 命令行工具,以管理后续服务账户和 keytab 文件。
温馨提示
我这里为了演示,我输入的密码是 admin,要与后续Ambari页面凭证保持统一
- 凭证:
admin/admin@TTBIGDATA.COM - 密码:
admin
和 RHEL差异
这里建议加一个 kadmin/dev1@TTBIGDATA.COM 不然会报错。这在Ubuntu上发生了,目前暂不清楚是哪个环节问题。
具体踩坑记录可参考 >> Failed to kinit as the KDC administrator user
sudo kadmin.local -q "listprincs" | grep kadmin
sudo kadmin.local -q "addprinc -randkey kadmin/dev1@TTBIGDATA.COM"
sudo kadmin.local -q "ktadd -k /etc/krb5kdc/kadm5.keytab kadmin/dev1@TTBIGDATA.COM"
# 添加完再次查看
sudo kadmin.local -q "listprincs" | grep kadmin
/usr/bin/kinit -c FILE:/var/lib/ambari-server/data/tmp/ambari_krb_1690981287658684697cc -S kadmin/dev1 admin/admin@TTBIGDATA.COM
2
3
4
5
6
7
8
验证完毕后如下图所示

# 六、编辑 ACL 权限规则
KDC 使用 ACL 文件控制谁能执行管理操作。 默认文件路径:
vim /etc/krb5kdc/kadm5.acl
修改内容为:
*/admin@TTBIGDATA.COM *

ACL 权限语法说明
格式为:
principal permissions [target_principal] [restrictions]
例如:
admin/admin@TTBIGDATA.COM *
表示拥有所有权限。 若想只允许添加用户,可使用:
*/admin@TTBIGDATA.COM a
# 七、确认 kdc.conf 与 ACL 路径一致
查看 kdc.conf:
cat /etc/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 750,88
[realms]
TTBIGDATA.COM = {
database_name = /var/lib/krb5kdc/principal
admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
acl_file = /etc/krb5kdc/kadm5.acl
key_stash_file = /etc/krb5kdc/stash
kdc_ports = 750,88
max_life = 10h 0m 0s
max_renewable_life = 7d 0h 0m 0s
#master_key_type = aes256-cts
#supported_enctypes = aes256-cts:normal aes128-cts:normal
default_principal_flags = +preauth
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

确认路径与 ACL 文件匹配,否则 kadmind 启动会报:
Cannot open ACL file /etc/krb5kdc/kadm5.acl
# 八、重启并验证服务运行
重启 KDC 与管理服务:
sudo systemctl restart krb5-kdc
sudo systemctl restart krb5-admin-server
2
验证:
kinit admin/admin@TTBIGDATA.COM
# 输入完密码后
klist
2
3
若能看到下面内容,说明配置成功。

- 01
- Ambari开启Kerberos认证加密类型错误 Kylin V1011-05
- 02
- KERBEROS SERVICE CHECK 报错11-04