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

news2024/11/18 3:31:46

文章目录

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

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

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

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

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

相关文章

渗透测试——1.4主动扫描

主动扫描是别人可以发觉的情报收集 一、nmap的使用 1.nmap<目标主机>:最常用的扫描方式 有nmap版本、扫描时间 “host is up”表示目标主机处于开机状态、“not shown”未开放端口 有四个端口是开的&#xff08;135.139.445.912&#xff09; 2.nmap -p<端口范围…

折叠屏,移动办公的第二战场

当下的移动办公&#xff0c;正在转换战场。 从PC端到移动端&#xff0c;大屏链接小屏&#xff0c;协作模式从单人到团队&#xff0c;移动办公领域一直在发展和自我更新&#xff0c;这也是硬件和软件企业共同开辟的“第一战场”。 如今&#xff0c;折叠屏带来了新形态&#xf…

Kafka、RocketMQ、RabbitMQ消息丢失可能存在的地方,以及解决方案

这里主要对比&#xff1a;Kafka、RocketMQ、RabbitMQ 介绍一下消息生产、存储、消费三者的架构形式。 消息丢失可能存在的场景&#xff1a; 情况一&#xff1a; 生产者发送给MQ的过程消息丢失 在写消息的过程中因为网络的原因&#xff0c;还没到mq消息就丢失了&#xff1b;或…

vue3+elementPlus+cascader动态加载封装自定义组件+v-model指令实现父子通信

文章目录 select普通操作 &#xff08;1&#xff09;cascader操作&#xff08;2&#xff09; select普通操作 &#xff08;1&#xff09; 搜索条件需求&#xff1a;接口入参需要houseId&#xff0c;但是要先选择完楼栋&#xff0c;再选择单元&#xff0c;最后选择房屋 如图&a…

vue2、vue3状态管理之vuex、pinia

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、状态管理之vuex1.1 State调用&#xff1a;1.2 Mutation在vuex中定义&#xff1a;在组件中使用&#xff1a; 1.3 Action在vuex中定义&#xff1a;将上面的减…

k8s是什么

生么是k8s&#xff1a; Kubernetes:8个字母省略&#xff0c;就是k8s 自动部署&#xff0c;自动扩展和管理容器化部署的应用程序的一个开源系统、 k8s是负责自动化运维管理多个容器化程序的集群&#xff0c;是一个功能强大的容器编排工具。 分布式和集群化的分布式进行容器管…

关于MySQL、分布式系统、SpringCloud面试题

前言 之前为了准备面试&#xff0c;收集整理了一些面试题。 本篇文章更新时间2023年12月27日。 最新的内容可以看我的原文&#xff1a;https://www.yuque.com/wfzx/ninzck/cbf0cxkrr6s1kniv MySQL 索引 说一下有哪些锁&#xff1f; 行锁有哪些&#xff1f; 性能优化 分库分表…

GrayLog日志平台的基本使用-ssh接入Dashboards展示

这里使用的版本为graylog4.2.10 1、一键安装graylog4.2.10&#xff0c;解压zip包&#xff0c;执行脚本就行 链接&#xff1a;https://pan.baidu.com/s/11U7GpBZ1B7PXR8pyWVcHNw?pwdudln 提取码&#xff1a;udln 2、通过rsyslog采集系统日志&#xff0c;具体操作参考前面文…

Java框架基础--maven,http,postman

maven Maven 提供了一个标准的构建生命周期和一组约定的目录结构&#xff0c;以简化和规范项目的构建过程。它主要用于 Java 项目&#xff0c;但也可以用于其他类型的项目。提高了项目的可维护性、可重复性和一致性&#xff0c;简化了构建和依赖管理的复杂性&#xff0c;使得开…

人类偏好导向:DPO技术重塑SDXL-1.0图像生成

引言 在AI领域&#xff0c;适应和理解人类偏好一直是技术发展的重要方向。斯坦福大学研究团队最近提出的Diffusion-DPO方法&#xff0c;旨在将这一理念应用于图像生成模型&#xff0c;特别是在文本到图像的转换领域。 Huggingface模型下载: https://huggingface.co/mhdang/ A…

dl转置卷积

转置卷积 转置卷积&#xff0c;顾名思义&#xff0c;通过名字我们应该就能看出来&#xff0c;其作用和卷积相反&#xff0c;它可以使得图像的像素增多 上图的意思是&#xff0c;输入是22的图像&#xff0c;卷积核为22的矩阵&#xff0c;然后变换成3*3的矩阵 代码如下 import…

遗传算法的应用——求解一元函数的极值

遗传算法的应用——求解一元函数的极值 1 基本概念2 预备知识3.1 模拟二进制转化为十进制的方法3.2 轮盘赌选择算法 3 问题4 Matlab代码5 运行效果6 总结 1 基本概念 遗传算法(Genetic Algorithm,GA)是模拟生物在自然环境中遗传和进化过程从而形成的随机全局搜索和优化方法&am…

C#与php自定义数据流传输

C#与php自定义数据流传输 介绍一、客户端与服务器数据传输流程图客户端发送数据给服务器&#xff1a;服务器返回数据给客户端&#xff1a; 二、自定义数据流C#版本数据流PHP版本数据流 三、数据传输测试1.在Unity中创建一个C#脚本NetWorkManager.cs2.服务器www目录创建StreamTe…

Docker 创建容器

1、创建MySQL5.7 拉取镜像&#xff1a;docker pull mysql:5.7创建容器&#xff1a;docker run -d --name mysql57001 -p 3306:3306 -v D:\DockerImage\QhData\MySql57:/var/lib/mysql -e MYSQL_ROOT_PASSWORD123456 mysql:5.7进入容器&#xff1a;docker exec -it mysql57001 …

检测如下MHA运行条件【踩坑记录】

【masterha_check_ssh --conf/etc/mha/app1.cnf&#xff1a;SSH免密登录】 【错误信息1】 [error][/usr/share/perl5/vendor_perl/MHA/SSHCheck.pm, ln111] SSH connection from root10.0.0.53(10.0.0.53:22) to root10.0.0.51(10.0.0.51:22) failed! 【错误反馈】就是服务器…

2024 软件测试面试题(800道)【附带答案】持续更新...

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

什么是数据分析思维

参考 一文学会如何做电商数据分析&#xff08;附运营分析指标框架&#xff09; 电子商务该如何做数据分析&#xff1f;如何数据分析入门&#xff08;从各项指标表象进入&#xff09; https://www.processon.com/outline/6589838c3129f1550cc69950 数据分析步骤 什么是数据分析…

HackTheBox - Medium - Linux - OnlyForYou

OnlyForYou OnlyForYou 是一台中等难度的 Linux 计算机&#xff0c;其特点是 Web 应用程序容易受到本地文件包含 &#xff08;LFI&#xff09; 的影响&#xff0c;该应用程序用于访问源代码&#xff0c;从而揭示盲目命令注入漏洞&#xff0c;从而导致目标系统上的 shell。该计…

k8s的二进制部署1

k8s的二进制部署&#xff1a;源码包部署 k8smaster01&#xff1a;192.168.176.61 kube-apiserver kube-controller-manager kube-scheduler etcd k8smaster01&#xff1a;192.168.176.62 kube-apiserver kube-controller-manager kube-scheduler node节点01&#xff1a;192.…

华清远见嵌入式学习——ARM——作业4

作业要求&#xff1a; 代码运行效果图&#xff1a; 代码&#xff1a; do_irq.c: #include "key_it.h" extern void printf(const char *fmt, ...); unsigned int i 0;//延时函数 void delay(int ms) {int i,j;for(i0;i<ms;i){for(j0;j<2000;j);} }void do_i…