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

2023-12-28 17:41:48


前言

本教程介绍了如何安装和配置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.crt
 default_realm = EXAMPLE.COM
 # 设置默认的凭据缓存名称为Keyring,并与用户ID关联
 default_ccache_name = KEYRING:persistent:%{uid}

# 这部分定义了领域(realm)相关的配置
[realms]
# 定义一个名为EXAMPLE.COM 的领域(realm)
 EXAMPLE.COM = {
# 指定Key Distribution Center(KDC)服务器的地址为 kerberos.example.com
 kdc = $(hostname)
# 指定管理员服务器(admin server) 的地址为 kerberos.example.com
 admin_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=$1
  local node2=$2
  local node3=$3

  yum -y install krb5-server
  if [ $? -eq 0 ]; then
    echo "krb5-server 安装成功"
    yum install -y krb5-workstation krb5-libs
    if [ $? -eq 0 ]; then
      echo "krb5-workstation 和 krb5-libs 安装成功"
      ssh $node2 "yum install -y krb5-workstation krb5-libs"
      if [ $? -eq 0 ]; then
        echo "$node2 的 krb5-workstation 和 krb5-libs 安装成功"
        ssh $node3 "yum install -y krb5-workstation krb5-libs"
        if [ $? -eq 0 ]; then
          echo "$node3 的 krb5-workstation 和 krb5-libs 安装成功"
        else
          echo "$node3 的 krb5-workstation 和 krb5-libs 安装失败,请重试"
          exit 1
        fi
      else
        echo "$node2 的 krb5-workstation 和 krb5-libs 安装失败,请重试"
        exit 1
      fi
    else
      echo "krb5-workstation 和 krb5-libs 安装失败,请重试"
      exit 1
    fi
  else
    echo "krb5-server 安装失败,请重试"
    exit 1
  fi

  echo "$kdcconf" > /var/kerberos/krb5kdc/kdc.conf
  if [ $? -eq 0 ]; then
    echo "kdc.conf修改成功"
  else
    echo "kdc.conf修改失败,请重试"
    exit 1
  fi
  echo "$krb5conf" > /etc/krb5.conf
  if [ $? -eq 0 ]; then
    echo "krb5.conf修改成功"
    scp /etc/krb5.conf "$node2":/etc/
    if [ $? -eq 0 ]; then
      echo "$node2 的krb5.conf修改成功"
      scp /etc/krb5.conf "$node3":/etc/
      if [ $? -eq 0 ]; then
        echo "$node3 的krb5.conf修改成功"
      else
        echo "$node3 的krb5.conf修改失败,请重试"
        exit 1
      fi
    else
      echo "$node2 的krb5.conf修改失败,请重试"
      exit 1
    fi
  else
    echo "krb5.conf修改失败,请重试"
    exit 1
  fi
  echo "$kadm5acl" > /var/kerberos/krb5kdc/kadm5.acl
  if [ $? -eq 0 ]; then
    echo "kadm5.acl修改成功"
  else
    echo "kadm5.acl修改失败,请重试"
    exit 1
  fi

  echo -e "root\nroot" | kdb5_util create -s
  if [ $? -eq 0 ]; then
    echo "创建一个新的空白Kerberos KDC数据库成功,密码:root"
  else
    echo "创建一个新的空白Kerberos KDC数据库失败,请重试"
    exit 1
  fi

  # krb5kdc 是 Kerberos Key Distribution Center(KDC)的守护进程,而 kadmin 是用于管理 Kerberos 数据库和策略的命令行工具。
  # 启动kdc
  systemctl start krb5kdc
  # 配置开机自启动
  systemctl enable krb5kdc
  # 启动kadmin
  systemctl start kadmin
  # 配置开机自启动
  systemctl enable kadmin

  # 创建root主体,用于远程登录。
  echo -e "root\nroot" | kadmin.local -q "addprinc root/admin"
  if [ $? -eq 0 ]; then
    echo "root主体创建成功,密码:root"
  else
    echo "root主体创建失败,请重试"
    exit 1
  fi
  echo -e "admin\nadmin" | kadmin.local -q "addprinc admin/admin"
  if [ $? -eq 0 ]; then
    echo "admin主体创建成功,密码:admin"
  else
    echo "admin主体创建失败,请重试"
    exit 1
  fi
  echo -e "test\ntest" | kadmin.local -q "addprinc test/admin"
  if [ $? -eq 0 ]; then
    echo "test主体创建成功,密码:test"
  else
    echo "test主体创建失败,请重试"
    exit 1
  fi
  echo "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.crt
 default_realm = EXAMPLE.COM
 # 设置默认的凭据缓存名称为Keyring,并与用户ID关联
 default_ccache_name = KEYRING:persistent:%{uid}

# 这部分定义了领域(realm)相关的配置
[realms]
# 定义一个名为EXAMPLE.COM 的领域(realm)
 EXAMPLE.COM = {
# 指定Key Distribution Center(KDC)服务器的地址为 kerberos.example.com
 kdc = $(hostname)
# 指定管理员服务器(admin server) 的地址为 kerberos.example.com
 admin_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-server
  if [ $? -eq 0 ]; then
    echo "krb5-server 安装成功"
    yum install -y krb5-workstation krb5-libs
    if [ $? -eq 0 ]; then
      echo "krb5-workstation 和 krb5-libs 安装成功"
    else
      echo "krb5-workstation 和 krb5-libs 安装失败,请重试"
      exit 1
    fi
  else
    echo "krb5-server 安装失败,请重试"
    exit 1
  fi

  echo "$kdcconf" > /var/kerberos/krb5kdc/kdc.conf
  if [ $? -eq 0 ]; then
    echo "kdc.conf修改成功"
  else
    echo "kdc.conf修改失败,请重试"
    exit 1
  fi
  echo "$krb5conf" > /etc/krb5.conf
  if [ $? -eq 0 ]; then
    echo "krb5.conf修改成功"
  else
    echo "krb5.conf修改失败,请重试"
    exit 1
  fi
  echo "$kadm5acl" > /var/kerberos/krb5kdc/kadm5.acl
  if [ $? -eq 0 ]; then
    echo "kadm5.acl修改成功"
  else
    echo "kadm5.acl修改失败,请重试"
    exit 1
  fi

  echo -e "root\nroot" | kdb5_util create -s
  if [ $? -eq 0 ]; then
    echo "创建一个新的空白Kerberos KDC数据库成功,密码:root"
  else
    echo "创建一个新的空白Kerberos KDC数据库失败,请重试"
    exit 1
  fi

  # krb5kdc 是 Kerberos Key Distribution Center(KDC)的守护进程,而 kadmin 是用于管理 Kerberos 数据库和策略的命令行工具。
  # 启动kdc
  systemctl start krb5kdc
  # 配置开机自启动
  systemctl enable krb5kdc
  # 启动kadmin
  systemctl start kadmin
  # 配置开机自启动
  systemctl enable kadmin

  # 创建root主体,用于远程登录。
  echo -e "root\nroot" | kadmin.local -q "addprinc root/admin"
  if [ $? -eq 0 ]; then
    echo "root主体创建成功,密码:root"
  else
    echo "root主体创建失败,请重试"
    exit 1
  fi
  echo -e "admin\nadmin" | kadmin.local -q "addprinc admin/admin"
  if [ $? -eq 0 ]; then
    echo "admin主体创建成功,密码:admin"
  else
    echo "admin主体创建失败,请重试"
    exit 1
  fi
  echo -e "test\ntest" | kadmin.local -q "addprinc test/admin"
  if [ $? -eq 0 ]; then
    echo "test主体创建成功,密码:test"
  else
    echo "test主体创建失败,请重试"
    exit 1
  fi
  echo "kerberos下载、安装、配置完成"
}

install_kerberos

exit 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.COM

Valid 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/cache

Default principal: user@EXAMPLE.COM

Valid 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命令查看当前会话中有效票据信息。

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

文章来源:https://blog.csdn.net/zcs2312852665/article/details/135245018
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。