Kerberos安装教程与命令详解(超详细)

文章目录

  • 前言
  • 一、安装准备
    • 1. 搭建集群
    • 2. 软件包介绍
  • 二、使用shell脚本一键安装
    • 1. 复制脚本
    • 2. 增加执行权限
    • 3. 执行脚本
  • 三、kdb5_util命令
    • 1. 简介
    • 2. 可用选项和命令的解释
    • 3. 常见命令及其说明
    • 4. 示例用法
  • 四、kadmin命令
    • 1. 简介
    • 2. 可用选项和命令的解释
    • 3. 常见命令及其说明
    • 4. xst命令
    • 5. 示例用法
  • 五、kinit命令
    • 1. 简介
    • 2. kinit命令的选项
    • 3. 示例用法
  • 六、klist命令
    • 1. 简介
    • 2. 常用的选项
    • 3. 示例用法
  • 总结


前言

本教程介绍了如何安装和配置Kerberos身份验证系统。首先,我们搭建了一个集群,并介绍了所需的软件包。然后,我们提供了一个一键安装脚本,可以自动下载、安装和配置Kerberos服务器及客户端组件。接下来,我们详细解释了kdb5_util、kadmin、kinit和klist等常用命令的用法。


一、安装准备

1. 搭建集群

点击链接查看集群搭建教程:配置集群免密登录

2. 软件包介绍

  1. krb5-server:这个软件包提供了运行 Kerberos 服务器所需的组件。它包含了 KDC(Key Distribution Center)和其他必要的工具,用于管理用户凭证、颁发票据以及处理身份验证请求等。通过安装 krb5-server 软件包,您可以搭建自己的 Kerberos 服务器,并为网络中的用户提供安全认证服务。

  2. krb5-workstation:这个软件包是一个客户端工具集合,用于与远程或本地运行着 Kerberos 服务器进行通信。它提供了一些常见命令行工具(如 kinit、klist 和 kdestroy),使用户能够获取票据、查看凭证信息并销毁凭证缓存等操作。通过安装 kerberos-workstation 软件包,您可以在客户端系统上使用这些命令来进行身份验证和访问受保护资源。

  3. krb5-libs:这个软件库是一个基础库集合,在执行与Kerberos相关任务时被其他程序依赖和调用。它实现了Kerberos协议规范,并为其他应用程序提供API接口来处理加密、解密、票据验证等功能。安装 krb5-libs 软件包可以确保系统上的其他 Kerberos 相关软件能够正常运行。


二、使用shell脚本一键安装

以下所有操作均在hadoop101节点

1. 复制脚本

集群版安装脚本
首先,在hadoop101节点,将以下脚本内容复制并保存为/tmp/install_kerberos.sh文件。

#!/bin/bash# 设置3个节点的主机名或ip,修改为自己的
host_node1=hadoop101
host_node2=hadoop102
host_node3=hadoop103# kerberos服务端配置文件
kdcconf="# 定义KDC(Key Distribution Center)的默认设置
[kdcdefaults]# kdc_ports = 88: 指定KDC使用的UDP端口号为88。kdc_ports = 88# kdc_tcp_ports = 88: 指定KDC使用的TCP端口号为88。kdc_tcp_ports = 88[realms]EXAMPLE.COM = {# 指定主密钥(Master Key)类型,即在 Kerberos 领域(realm) 中生成和使用加密所需的主密钥算法# master_key_type = aes256-cts# 指定ACL文件路径, ACL文件包含授权访问 Kerberos 数据库和操作权限acl_file = /var/kerberos/krb5kdc/kadm5.acl# 此行指定字典文件路径, 字典文件用于密码策略检查dict_file = /usr/share/dict/words# 此行指定管理员密钥表(admin keytab) 文件路径, 管理员密钥表包含管理者身份验证所需信息admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab# 此行指定支持的加密类型列表, Kerberos 支持多种加密算法,这里列出了一些常见的supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal}
"# kerberos客户端配置文件
krb5conf="# Configuration snippets may be placed in this directory as well
# includedir /etc/krb5.conf.d/: 这行指令告诉系统在/etc/krb5.conf.d/目录中查找其他Kerberos配置文件。
includedir /etc/krb5.conf.d/# [logging]: 这部分定义了日志记录选项。
[logging]# 指定默认日志记录位置default = FILE:/var/log/krb5libs.log# 指定Key Distribution Center(KDC)的日志记录位置kdc = FILE:/var/log/krb5kdc.log# 指定管理员服务器的日志记录位置admin_server = FILE:/var/log/kadmind.log# 这部分包含库级别(libdefaults)的默认设置
[libdefaults]# 禁止使用DNS查找域名对应的领域(realm)dns_lookup_realm = false# 设置票据有效期为24小时ticket_lifetime = 24h# 设置续约时间限制,即可以延长票据有效期至最多7天renew_lifetime = 7d# 允许票据转发给其他服务forwardable = true# 禁用反向DNS查找rdns = false# 指定PKINIT(公钥初始化)证书的位置pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crtdefault_realm = EXAMPLE.COM# 设置默认的凭据缓存名称为Keyring,并与用户ID关联default_ccache_name = KEYRING:persistent:%{uid}# 这部分定义了领域(realm)相关的配置
[realms]
# 定义一个名为EXAMPLE.COM 的领域(realm)EXAMPLE.COM = {
# 指定Key Distribution Center(KDC)服务器的地址为 kerberos.example.comkdc = $(hostname)
# 指定管理员服务器(admin server) 的地址为 kerberos.example.comadmin_server = $(hostname)}# 这部分定义了将特定域名映射到相应领域(realm)的规则
[domain_realm]
# 将以 .example.com 结尾(包括子域)的所有主机名都映射到 EXAMPLE.COM 领域。
# .example.com = EXAMPLE.COM
# example.com = EXAMPLE.COM
"# */admin@EXAMPLE.COM     * 是 Kerberos 中的一个访问控制列表(ACL)规则,用于指定对特定主体(principal)的权限(permissions)。
# 在这个规则中,*/admin@EXAMPLE.COM 表示匹配任意主体名称以 /admin@EXAMPLE.COM 结尾的 principal。而 * 则表示允许该 principal 执行所有操作。
# Kerberos 的 ACL 规则用于定义哪些主体具有对特定服务或资源的访问权限。每个规则由两部分组成:principal和 permissions。Principal 指定了要应用该规则的用户或服务名,而 permissions 定义了允许执行哪些操作。
kadm5acl="*/admin@EXAMPLE.COM     *"install_kerberos() {local node1=$1local node2=$2local node3=$3yum -y install krb5-serverif [ $? -eq 0 ]; thenecho "krb5-server 安装成功"yum install -y krb5-workstation krb5-libsif [ $? -eq 0 ]; thenecho "krb5-workstation 和 krb5-libs 安装成功"ssh $node2 "yum install -y krb5-workstation krb5-libs"if [ $? -eq 0 ]; thenecho "$node2 的 krb5-workstation 和 krb5-libs 安装成功"ssh $node3 "yum install -y krb5-workstation krb5-libs"if [ $? -eq 0 ]; thenecho "$node3 的 krb5-workstation 和 krb5-libs 安装成功"elseecho "$node3 的 krb5-workstation 和 krb5-libs 安装失败,请重试"exit 1fielseecho "$node2 的 krb5-workstation 和 krb5-libs 安装失败,请重试"exit 1fielseecho "krb5-workstation 和 krb5-libs 安装失败,请重试"exit 1fielseecho "krb5-server 安装失败,请重试"exit 1fiecho "$kdcconf" > /var/kerberos/krb5kdc/kdc.confif [ $? -eq 0 ]; thenecho "kdc.conf修改成功"elseecho "kdc.conf修改失败,请重试"exit 1fiecho "$krb5conf" > /etc/krb5.confif [ $? -eq 0 ]; thenecho "krb5.conf修改成功"scp /etc/krb5.conf "$node2":/etc/if [ $? -eq 0 ]; thenecho "$node2 的krb5.conf修改成功"scp /etc/krb5.conf "$node3":/etc/if [ $? -eq 0 ]; thenecho "$node3 的krb5.conf修改成功"elseecho "$node3 的krb5.conf修改失败,请重试"exit 1fielseecho "$node2 的krb5.conf修改失败,请重试"exit 1fielseecho "krb5.conf修改失败,请重试"exit 1fiecho "$kadm5acl" > /var/kerberos/krb5kdc/kadm5.aclif [ $? -eq 0 ]; thenecho "kadm5.acl修改成功"elseecho "kadm5.acl修改失败,请重试"exit 1fiecho -e "root\nroot" | kdb5_util create -sif [ $? -eq 0 ]; thenecho "创建一个新的空白Kerberos KDC数据库成功,密码:root"elseecho "创建一个新的空白Kerberos KDC数据库失败,请重试"exit 1fi# krb5kdc 是 Kerberos Key Distribution Center(KDC)的守护进程,而 kadmin 是用于管理 Kerberos 数据库和策略的命令行工具。# 启动kdcsystemctl start krb5kdc# 配置开机自启动systemctl enable krb5kdc# 启动kadminsystemctl start kadmin# 配置开机自启动systemctl enable kadmin# 创建root主体,用于远程登录。echo -e "root\nroot" | kadmin.local -q "addprinc root/admin"if [ $? -eq 0 ]; thenecho "root主体创建成功,密码:root"elseecho "root主体创建失败,请重试"exit 1fiecho -e "admin\nadmin" | kadmin.local -q "addprinc admin/admin"if [ $? -eq 0 ]; thenecho "admin主体创建成功,密码:admin"elseecho "admin主体创建失败,请重试"exit 1fiecho -e "test\ntest" | kadmin.local -q "addprinc test/admin"if [ $? -eq 0 ]; thenecho "test主体创建成功,密码:test"elseecho "test主体创建失败,请重试"exit 1fiecho "kerberos下载、安装、配置完成"
}install_kerberos "$host_node1" "$host_node2" "$host_node3"exit 0

单机版安装脚本

#!/bin/bash# kerberos服务端配置文件
kdcconf="# 定义KDC(Key Distribution Center)的默认设置
[kdcdefaults]# kdc_ports = 88: 指定KDC使用的UDP端口号为88。kdc_ports = 88# kdc_tcp_ports = 88: 指定KDC使用的TCP端口号为88。kdc_tcp_ports = 88[realms]EXAMPLE.COM = {# 指定主密钥(Master Key)类型,即在 Kerberos 领域(realm) 中生成和使用加密所需的主密钥算法# master_key_type = aes256-cts# 指定ACL文件路径, ACL文件包含授权访问 Kerberos 数据库和操作权限acl_file = /var/kerberos/krb5kdc/kadm5.acl# 此行指定字典文件路径, 字典文件用于密码策略检查dict_file = /usr/share/dict/words# 此行指定管理员密钥表(admin keytab) 文件路径, 管理员密钥表包含管理者身份验证所需信息admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab# 此行指定支持的加密类型列表, Kerberos 支持多种加密算法,这里列出了一些常见的supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal}
"# kerberos客户端配置文件
krb5conf="# Configuration snippets may be placed in this directory as well
# includedir /etc/krb5.conf.d/: 这行指令告诉系统在/etc/krb5.conf.d/目录中查找其他Kerberos配置文件。
includedir /etc/krb5.conf.d/# [logging]: 这部分定义了日志记录选项。
[logging]# 指定默认日志记录位置default = FILE:/var/log/krb5libs.log# 指定Key Distribution Center(KDC)的日志记录位置kdc = FILE:/var/log/krb5kdc.log# 指定管理员服务器的日志记录位置admin_server = FILE:/var/log/kadmind.log# 这部分包含库级别(libdefaults)的默认设置
[libdefaults]# 禁止使用DNS查找域名对应的领域(realm)dns_lookup_realm = false# 设置票据有效期为24小时ticket_lifetime = 24h# 设置续约时间限制,即可以延长票据有效期至最多7天renew_lifetime = 7d# 允许票据转发给其他服务forwardable = true# 禁用反向DNS查找rdns = false# 指定PKINIT(公钥初始化)证书的位置pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crtdefault_realm = EXAMPLE.COM# 设置默认的凭据缓存名称为Keyring,并与用户ID关联default_ccache_name = KEYRING:persistent:%{uid}# 这部分定义了领域(realm)相关的配置
[realms]
# 定义一个名为EXAMPLE.COM 的领域(realm)EXAMPLE.COM = {
# 指定Key Distribution Center(KDC)服务器的地址为 kerberos.example.comkdc = $(hostname)
# 指定管理员服务器(admin server) 的地址为 kerberos.example.comadmin_server = $(hostname)}# 这部分定义了将特定域名映射到相应领域(realm)的规则
[domain_realm]
# 将以 .example.com 结尾(包括子域)的所有主机名都映射到 EXAMPLE.COM 领域。
# .example.com = EXAMPLE.COM
# example.com = EXAMPLE.COM
"# */admin@EXAMPLE.COM     * 是 Kerberos 中的一个访问控制列表(ACL)规则,用于指定对特定主体(principal)的权限(permissions)。
# 在这个规则中,*/admin@EXAMPLE.COM 表示匹配任意主体名称以 /admin@EXAMPLE.COM 结尾的 principal。而 * 则表示允许该 principal 执行所有操作。
# Kerberos 的 ACL 规则用于定义哪些主体具有对特定服务或资源的访问权限。每个规则由两部分组成:principal和 permissions。Principal 指定了要应用该规则的用户或服务名,而 permissions 定义了允许执行哪些操作。
kadm5acl="*/admin@EXAMPLE.COM     *"install_kerberos() {yum -y install krb5-serverif [ $? -eq 0 ]; thenecho "krb5-server 安装成功"yum install -y krb5-workstation krb5-libsif [ $? -eq 0 ]; thenecho "krb5-workstation 和 krb5-libs 安装成功"elseecho "krb5-workstation 和 krb5-libs 安装失败,请重试"exit 1fielseecho "krb5-server 安装失败,请重试"exit 1fiecho "$kdcconf" > /var/kerberos/krb5kdc/kdc.confif [ $? -eq 0 ]; thenecho "kdc.conf修改成功"elseecho "kdc.conf修改失败,请重试"exit 1fiecho "$krb5conf" > /etc/krb5.confif [ $? -eq 0 ]; thenecho "krb5.conf修改成功"elseecho "krb5.conf修改失败,请重试"exit 1fiecho "$kadm5acl" > /var/kerberos/krb5kdc/kadm5.aclif [ $? -eq 0 ]; thenecho "kadm5.acl修改成功"elseecho "kadm5.acl修改失败,请重试"exit 1fiecho -e "root\nroot" | kdb5_util create -sif [ $? -eq 0 ]; thenecho "创建一个新的空白Kerberos KDC数据库成功,密码:root"elseecho "创建一个新的空白Kerberos KDC数据库失败,请重试"exit 1fi# krb5kdc 是 Kerberos Key Distribution Center(KDC)的守护进程,而 kadmin 是用于管理 Kerberos 数据库和策略的命令行工具。# 启动kdcsystemctl start krb5kdc# 配置开机自启动systemctl enable krb5kdc# 启动kadminsystemctl start kadmin# 配置开机自启动systemctl enable kadmin# 创建root主体,用于远程登录。echo -e "root\nroot" | kadmin.local -q "addprinc root/admin"if [ $? -eq 0 ]; thenecho "root主体创建成功,密码:root"elseecho "root主体创建失败,请重试"exit 1fiecho -e "admin\nadmin" | kadmin.local -q "addprinc admin/admin"if [ $? -eq 0 ]; thenecho "admin主体创建成功,密码:admin"elseecho "admin主体创建失败,请重试"exit 1fiecho -e "test\ntest" | kadmin.local -q "addprinc test/admin"if [ $? -eq 0 ]; thenecho "test主体创建成功,密码:test"elseecho "test主体创建失败,请重试"exit 1fiecho "kerberos下载、安装、配置完成"
}install_kerberosexit 0

2. 增加执行权限

在终端中执行以下命令,为脚本添加执行权限。

chmod a+x /tmp/install_kerberos.sh

3. 执行脚本

执行以下命令,运行脚本开始下载、安装和配置Kafka。
首先在hadoop101执行,再使用远程连接命令让hadoop102hadoop103节点执行。

/tmp/install_kerberos.sh

请等待安装配置完成,如有异常会有提示。

成功如下图所示:

在这里插入图片描述


三、kdb5_util命令

1. 简介

kdb5_util命令是用于管理Kerberos数据库的实用工具。它提供了各种选项和命令,可以对Kerberos密钥分发中心(KDC)数据库执行操作。

2. 可用选项和命令的解释

  • [-x db_args]*: 任意数量的特定于数据库的参数。请查看每个数据库文档以获取支持的参数列表。
  • -r realm: 指定领域(realm)名称。
  • -d dbname: 指定要使用或创建/销毁/转储/加载等操作所涉及到的数据库文件名。
  • -k mkeytype: 指定主密钥类型。
  • -M mkeyname: 指定主密钥名称。
  • -kv mkeyVNO: 主密钥版本号(Key Version Number)。

3. 常见命令及其说明

  • create [-s]:创建一个新的空白Kerberos KDC数据库,可选择使用安全模式([-s])生成随机密码。

  • destroy [-f]:销毁当前指定或默认位置上存储着 Kerberos KDC 数据库文件,并删除相关数据。

  • stash [-f keyfile]:将当前主键保存到指定路径下,默认为.k5.REALM_NAME.stash

  • dump [filename [princs...]]:转储整个或部分 Kerberos 数据库内容到文件中,可以选择不同格式进行导出,并且还可以指定要转储的特定主体。

  • load [-old|-ov|-b6|-b7|-r13|-r18] [-verbose] [-update] filename:从文件中加载 Kerberos 数据库内容,可以选择不同格式进行导入,并且还可以选择更新已存在的条目。

  • ark [-e etype_list] principal:生成一个或多个给定主体(principal)的随机密钥,可选地指定加密类型(etype)列表。

  • add_mkey [-e etype] [-s]:添加一个新的主键到数据库中,可选地指定加密类型和安全模式(`[-s])来生成随机密码。

  • use_mkey kvno [time]:使用具有给定版本号(kvno)和时间戳(time) 的主键进行操作。

  • list_mkeys: 列出数据库中所有有效的Kerberos 主键及其相关信息。

  • update_princ_encryption [princ-pattern]: 更新满足特殊模式(princ-pattern)条件下用户账户所使用加密方式

  • purge_mkeys: 清除过期、无效或不再需要维护备份副本等原因而被标记为删除状态但尚未真正删除掉得m-key.

  • tabdump dumptype: 转储表格数据到文件, 可以根据dumptype参数设置输出格式

4. 示例用法

  1. 创建新的Kerberos数据库:
kdb5_util create -s

上述命令会创建一个空白的Kerberos数据库,并生成随机密钥作为初始管理员凭证。

  1. 销毁现有Kerberoos数据库:
kdbutil destroy -f

上述命令会销毁当前存在并激活状态下 的 Kerebos数据 库

  1. 存储数据库密码:
kdb5_util stash

上述命令会将当前数据库的密码存储在本地密钥表中。

  1. 加载备份文件到数据库:
kdb5_util load /path/to/backup_file.dump 

上述命令会从指定的备份文件中加载数据到当前Kerberos数据库。


四、kadmin命令

1. 简介

kadmin.local 是 Kerberos 管理工具的一个命令行界面。它允许管理员在本地系统上直接管理 Kerberos 数据库,而无需通过网络连接到 KDC(Key Distribution Center)服务器。

kadmin的功能与kadmin.local一样,只不过kadmin是用于远程连接。 它允许管理员执行各种操作,如创建和管理主体(principal)、策略(policy)以及密钥等。

2. 可用选项和命令的解释

  • -r realm: 指定领域(realm)名称。
  • -p principal: 指定要使用的管理员主体。
  • -q query: 执行指定查询语句,静默模式,在执行完指定的操作后退出,非交互式操作。

3. 常见命令及其说明

  • add_principaladdprinc:添加新的主体到数据库。
  • cpw:修改指定主体密码。
  • delete_principaldelprinc:从数据库中删除指定的主体。
  • modify_principalmodprinc:修改现有主体的属性,如密码、过期时间等。
  • list_principalslistprincs:列出所有或匹配特定模式条件下的主体列表。
  • add_policyaddpol: 添加新策略到数据库
  • delete_policydelpol: 从数据库中删除指定策略
  • xst: 执行密钥表生成操作。

4. xst命令

在kadmin命令行工具中,xst是用于生成Kerberos凭证的命令。它可以将用户的身份验证信息存储在一个票据文件中,以便稍后使用。

以下是xst命令的详细解释:

kadmin -p <principal> -q "xst [-norandkey] [-k <keytab>] [<principal>]"
  • -p <principal>:指定要用于执行操作的管理员主体(通常是管理员用户)。
  • -q "xst":表示要执行生成凭证(ticket-granting ticket)操作。
  • [-norandkey]:可选参数,如果提供此参数,则不会为新生成的票据使用随机密钥。这意味着该票据只能由拥有相应密钥或密码知识的实体进行解析和使用。
  • [-k <keytab>]: 可选参数,在指定路径上查找并加载包含主体键值对信息 (principle-key pairs) 的 keytab 文件。如果未提供此参数,则默认情况下会尝试从系统默认位置加载 keytab 文件。
  • [<principal>]: 可选参数,指定要为其获取凭证(ticket-granting ticket) 的 Kerberos 主体名称。如果省略此项,默认情况下将为当前登录用户获取凭证。

通过运行以上命令,并根据需要选择适当地设置相关标志和选项, 您可以创建一个包含所需 Kerberos 凭证信息的票据文件。这个票据文件可以用于访问需要 Kerberos 认证的服务,而无需再次输入密码。

5. 示例用法

  1. 进入交互式界面
kadmin.local
  1. 添加新用户 principal 到 Kerberos 数据库
kadmin.local -q "addprinc username"

上述命令会在Kerberos数据 库 中添加名为 “username” 的 新principal。

  1. 删除用户 principal
kadmi.local -q "delprinc username"

上述命令会从Kerberoos数据 库 中移除 名为 “username”的principal。

  1. 修改用户 principal 属性
kamin.local -q "modprinc +requires_preauth user@REALM.COM"

上述命令会将名为 “user@REALM.COM” 的 principal 设置为需要预身份验证。

  1. 列出所有主体
kadmin.local -q "listprincs"

上述命令会列出数据库中的所有主体列表。

  1. 在 Kerberos 中生成服务主体(service principal)密钥表(keytab)文件
kadmin.local -q "xst -norandkey -k /root/test.keytab test@EXAMPLE.COM"
  • xst: 表示执行密钥表生成操作。
  • -norandkey: 指定不要为新生成的密钥使用随机值,而是使用用户密码作为初始值。
  • -k /root/test.keytab: 指定将生成的密钥保存到 /root/test.keytab 文件中。您可以根据需要更改路径和文件名。
  • test@EXAMPLE.COM: 要创建 keytab 的服务主体名称。
  1. 销毁当前用户的 Kerberos 凭据缓存
    kdestroy 命令用于销毁当前用户的 Kerberos 凭据缓存(credential cache)。它会删除当前用户在本地计算机上保存的任何 Kerberos 凭据,包括票证和密钥。当您使用 kinit 命令获取了 Kerberos 票证并且不再需要时,可以使用 kdestroy 命令来清除这些凭据。
kdestroy

运行此命令后,Kerberos 缓存将被清空,并且您将需要重新进行身份验证才能访问受到 Kerberos 保护的资源。


五、kinit命令

1. 简介

kinit是Kerberos身份验证系统中的一个命令行工具,用于获取和缓存用户的Kerberos票据。通过使用kinit命令,用户可以在登录到Kerberos环境后获取临时凭证(ticket-granting ticket),以便在该会话期间进行身份验证。

2. kinit命令的选项

  • -V: 显示详细输出。
  • -l lifetime: 指定票据有效期限。
  • -s start_time: 指定票据生效时间。
  • -r renewable_life: 指定可更新票据的有效期限。
  • -f, --forwardable, 或者使用反义选项 -F, --noforwardable: 控制是否可以将票据转发给其他主体(服务)进行代理认证,默认为不可转发。
  • -p,--proxiable, 或者使用反义选项 -P, --noproxiable: 控制是否可以对该凭证进行代理认证,默认为可代理认证。
    • 可以在后面加上参数 <principal> 来指定要获取凭证所属用户,如果没有指定,则默认为当前登录用户。

下面是其他一些选项:

  • 匿名模式

    • 使用参数:
      * -n: 在匿名模式下运行,即不提供用户名和密码,在某些情况下可能需要这种方式来执行操作或测试配置等情况;
    • kinit -n [-a | A] [--request-pac | --no-request-pac] [-C | --canonicalize]
      
  • 地址选项

    • 使用参数:
      * -a: 包括主机的网络地址;
    • -A: 不包括主机的网络地址。
  • 验证和更新

    • -v: 验证票据是否有效;
    • -R: 更新(续期)票据,如果可续期且尚未过期,则会刷新凭证时间戳以延长其有效性。
  • 其他选项

    • -k, --use-keytab: 使用密钥表进行身份验证。

      • 可以与以下选项一起使用:
        • -i, --use-default-client-keytab: 使用默认的客户端密钥表进行身份验证。
        • -t <keytab_file>, --keytab=<keytab_file>: 指定要使用的密钥表文件名。
    • -c <cachename>, --cache=<cachename>: 指定Kerberos 5缓存名称。

    • -S <service_name>, --service=<service_name>: 指定服务名。用于指示要获取凭证的服务主体。

3. 示例用法

  1. 获取默认主体(当前登录用户名)的票据,并将其保存至默认凭证缓存文件中:
kinit 
Password for user@EXAMPLE.COM:

执行上述示例后,系统将提示您输入密码以进行身份验证。

  1. 获取指定主体的票据,并将其保存至自定义凭证缓存文件中:
kinit -c /path/to/custom/cache user@EXAMPLE.COM
Password for user@EXAMPLE.COM:

在上述示例中,我们使用了 -c 选项来指定自定义的凭证缓存文件路径和名称。

  1. 使用keytab进行认证
kinit -k -t /root/test.keytab test

六、klist命令

1. 简介

klist是Kerberos身份验证系统中的一个命令行工具,用于查看和管理用户的Kerberos票据缓存。通过使用klist命令,用户可以列出当前会话中有效的票据,并获取有关这些票据的详细信息。

2. 常用的选项

  • -c:显示指定凭证缓存文件中存在哪些凭证。
  • -f:显示完整格式输出,包括每个凭证及其相关信息。
  • -s:以简洁格式输出只显示主体名称和有效期限。

其他更高级或特殊情况下使用到的选项,请参考相关文档或运行 man kinit 命令查看详细信息。

3. 示例用法

  1. 列出当前会话中所有有效票据
klist 
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: user@EXAMPLE.COMValid starting       Expires              Service principal  
12/27/2023 10:00 AM   12/28/2023 10:00 AM   krbtgt/EXAMPLE.COM@EXAMPLE.COM  

执行上述示例后,系统将列出当前会话(默认)所持有并且尚未过期(valid) 的所有 Kerberos 票据。输出结果包括票据缓存文件路径、默认主体名称以及每个票据的有效期限和服务主体名称。

  1. 显示指定凭证缓存文件中存在哪些凭证
klist -c /path/to/custom/cache
Ticket cache: FILE:/path/to/custom/cacheDefault principal: user@EXAMPLE.COMValid starting       Expires              Service principal  
12/27/2023 10:00 AM   12/28/2023 10:00 AM   krbtgt/EXAMPLE.COM@EXAMPLE.COM  

总结

通过本教程,您学习到如何使用shell脚本一键安装Kerberos,并掌握了几个重要的命令:kdb5_util用于管理Kerberos数据库;kadmin.local或者远程连接方式下的 kadmin 用于管理主体(principal)、策略(policy)以及密钥等;而 kinit则是获取并缓存用户票据以进行身份验证;最后, 使用 klist命令查看当前会话中有效票据信息。

希望本教程对您有所帮助!如有任何疑问或问题,请随时在评论区留言。感谢阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/583979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

芋道视频199 - 工作流 - 关系图 - ruoyi-vue-pro

一 新建表单 数据库&#xff1a;bpm_form。实体类&#xff1a;BpmFormDO.java&#xff1a; 二 流程模型、流程部署、流程定义 1 第1步&#xff1a;创建流程模型 页面操作&#xff1a;实体类&#xff1a;Model.java。数据库&#xff1a;ACT_RE_MODEL 流程模板信息表&#xf…

Python基础进阶:9个易错知识点

你好&#xff0c;我是kelly。 kelly根据自己平时工作&#xff0c;总结9个易错知识点&#xff0c;希望对大家有用。 知识点1&#xff1a;is 和 is比较是两个变量地址是否相同&#xff0c;比较是两个变量的值&#xff08;内容&#xff09;是否相同。 示例&#xff1a; In [92…

2分钟明白什么是SCADA?

SCADA——数据采集和监控系统的英文缩写&#xff0c;国内流行的叫法是&#xff0c;监控组态软件&#xff0c;是生产控制的核心&#xff0c;是位于控制设备之上&#xff0c;侧重于管理的纯软件&#xff0c;在ERP/MES/PCS架构中起承上启下的作用。SCADA负责控制或监控整个工厂&am…

uniapp路由

1、路由登记 uni-app页面路由为框架统一管理&#xff0c;开发者需要在pages.json里配置每个路由页面的路径及页面样式。 类似小程序在 app.json 中配置页面路由一样。 所以 uni-app 的路由用法与 Vue Router 不同&#xff0c;如仍希望采用 Vue Router 方式管理路由&#xff0c;…

九州金榜|教育孩子小技巧--给孩子讲故事

百年大计&#xff0c;教育为本。对于孩童来讲&#xff0c;故事无疑是最好的教育方法&#xff0c;通过一个个引人入胜的小故事将其中蕴含的道理、经验、哲理、观念传递给孩子。 可以这么说&#xff0c;故事对于儿童获取词汇储备、洞察能力、处事方法、情商和智力的提升都有着极为…

Go 语言如何读取 excel 测试数据,简单易学

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

算法基础day2

前缀和 #include <iostream> using namespace std; const int N100010; int n,m; int a[N],s[N]; int main() {scanf("%d%d",&n,&m);for(int i1;i<n;i) scanf("%d",&a[i]);for(int i1;i<n;i) s[i]s[i-1]a[i];while(m--){int l,r;s…

Gooxi亮相2023中国数据与存储峰会展示最新存储解决方案

今日&#xff0c;以“数智创新&#xff0c;AI未来”为主题的2023 中国数据与存储峰会在北京顺利举行&#xff0c;Gooxi受邀参与并展示了最新存储服务器产品&#xff0c;搭配最新处理器平台&#xff0c;能够广泛应用在人工智能、数据分析、云端计算、数据存储和高性能计算等领域…

兔子目标检测数据集VOC格式3900张

兔子是一类可爱的哺乳动物&#xff0c;拥有圆润的脸庞和长长的耳朵&#xff0c;身体轻盈柔软。它们通常是以温和和友善的形象出现在人们的视野中&#xff0c;因此常常成为童话故事和卡通形象中的角色。 兔子是草食性动物&#xff0c;主要以各种草本植物为食&#xff0c;包括草…

python查找mongo中符合条件的json记录

一、需求&#xff1a; 之前有次需要临时查找mongo中存储的json串&#xff0c;符合特定条件的记录&#xff1b; 举个例子&#xff0c;mongo中记录如下图&#xff1a; 其中每条存储的数据大概为&#xff1a; [{"createUser": "Zxtech","paramName&qu…

NFC与ZigBee技术在智慧农业物联网监测系统中的应用

近年来&#xff0c;我国农业物联网技术飞速发展&#xff0c;基于物联网技术的智能农业监测系统有望得到较大规模的推广应用。但传统的物联网农业监测系统其网络结构层次单一&#xff0c;多采用基于有线或无线结构的节点-上位机数据采集模式&#xff0c;节点数据访问模式缺乏灵活…

【Leetcode 39】组合总和 —— 回溯法

39. 组合总和 给你一个无重复元素的整数数组candidates和一个目标整数target &#xff0c;找出candidates中可以使数字和为目标数target的 所有不同组合&#xff0c;并以列表形式返回。你可以按**任意顺序 **返回这些组合。 candidates中的同一个数字可以 无限制重复被选取 。…

喜讯丨智安网络实力上榜《嘶吼2023中国网络安全产业势能榜》

近日&#xff0c;嘶吼安全产业研究院正式发布《嘶吼2023中国网络安全产业势能榜》。智安网络凭借在网络安全行业领先的产品实力、专业的安全服务水平及多年累积的行业经验&#xff0c;从300余家厂商中脱颖而出&#xff0c;成为《中国网络安全产业势能榜》互联网行业势能厂商。 …

ACM32F403/F433 12 位多通道国产芯片,支持 MPU 存储保护功能,应用于工业控制,智能家居等产品中

ACM32F403/F433 芯片的内核基于 ARMv8-M 架构&#xff0c;支持 Cortex-M33 和 Cortex-M4F 指令集。芯片内核 支持一整套DSP指令用于数字信号处理&#xff0c;支持单精度FPU处理浮点数据&#xff0c;同时还支持Memory Protection Unit &#xff08;MPU&#xff09;用于提升应用的…

mac node基本操作

1 查看所有版本 npm view node versions输出 2 查看已经安装的版本 n list3 安装指定版本 sudo -E n 16.0.04 切换版本 sudo n 16.0.05 查看版本 node -v

HTML+CSS+JS网页设计期末课程大作业 web课程设计 web前端开发 网页规划与设计

HTMLCSSJS网页设计期末课程大作业 web前端开发技术 web课程设计 网页规划与设计 &#x1f4a5; 文章目录一、&#x1f6a9; 网站描述二、&#x1f38c; 网站介绍三、&#x1f3f4; 网站类型A 个人博客主题B 人物明星主题C 旅游主题D 游戏主题E 动漫主题F 美食主题G 校园主题H 企…

vue项目移动端点击图片放大预览(可拖拽,放大)

1.下载依赖 npm install vue-photo-preview -S 2.引入 main.js 中全局引入 import preview from vue-photo-preview import vue-photo-preview/dist/skin.css Vue.use(preview) 3. 应用 给图片加上 preview"0" 分组 <img preview"0" style"…

【XR806开发板试用】XR806串口驱动CM32M对小厨宝的控制实验

一.说明 非常感谢基于安谋科技STAR-MC1的全志XR806 Wi-FiBLE开源鸿蒙开发板试用活动,并获得开发板试用。 XR806是全志科技旗下子公司广州芯之联研发设计的一款支持WiFi和BLE的高集成度无线MCU芯片&#xff0c;支持OpenHarmony minisystem和FreeRTOS&#xff0c;具有集成度高、…

用通俗易懂的方式讲解大模型:基于 LangChain 和 ChatGLM2 打造自有知识库问答系统

随着人工智能技术的迅猛发展&#xff0c;问答机器人在多个领域中展示了广泛的应用潜力。在这个信息爆炸的时代&#xff0c;许多领域都面临着海量的知识和信息&#xff0c;人们往往需要耗费大量的时间和精力来搜索和获取他们所需的信息。 在这种情况下&#xff0c;垂直领域的 A…

C++ //例13.14 将一批数据以二进制形式存放在磁盘文件中。例13.15 将刚才以二进制形式存放在磁盘文件中的数据读入内存并在显示器上显示。

C程序设计 &#xff08;第三版&#xff09; 谭浩强 例13.14 例13.15 例13.14 将一批数据以二进制形式存放在磁盘文件中。 例13.15 将刚才以二进制形式存放在磁盘文件中的数据读入内存并在显示器上显示。 IDE工具&#xff1a;VS2010 Note: 使用不同的IDE工具可能有部分差异。…