栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Kerberos 各种错误消息排查

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kerberos 各种错误消息排查

记录一下有关 Kerberos 错误消息的信息,包括每个错误出现的原因以及解决此错误的方法。

SEAM Tool 错误消息

Unable to view the list of principals or policies; use the Name field.

原因: 登录时使用的 admin 主体在 Kerberos ACL 文件 (kadm5.acl) 中没有列出特权 (l)。因此,无法查看主体列表或策略列表。

解决方法: 必须在 "Name"(名称)字段中键入主体名称和策略名称才能对其进行处理,或者需要使用具有相应特权的主体登录。

JNI: Java array creation failed

JNI: Java class lookup failed

JNI: Java field lookup failed

JNI: Java method lookup failed

JNI: Java object lookup failed

JNI: Java object field lookup failed

JNI: Java string access failed

JNI: Java string creation failed

原因: SEAM Tool (gkadmin) 使用的 Java 本机接口存在严重问题。

解决方法: 退出 gkadmin 然后重新启动。如果问题仍然存在,请报告错误。

常见的 Kerberos 错误消息 (A-M)

本节按字母顺序 (A-M) 列出了 Kerberos 命令、Kerberos 守护进程、PAM 框架、GSS 接口、NFS 服务和 Kerberos 库的常见错误消息。

All authentication systems disabled; connection refused

原因: 此版本的 rlogind 不支持任何验证机制。

解决方法: 确保调用 rlogind 时使用了 -k 选项。

Another authentication mechanism must be used to access this host

原因: 无法完成验证。

解决方法: 确保客户机使用 Kerberos V5 机制进行验证。

Authentication negotiation has failed, which is required for encryption. Good bye.

原因: 无法与服务器协商验证。

解决方法: 通过使用 toggle authdebug 命令调用 telnet 命令启动验证调试,并查看调试消息以获取更多线索。另外,确保具有有效凭证。

Bad krb5 admin server hostname while initializing kadmin interface

原因: 在 krb5.conf 文件中为 admin_server 配置了无效的主机名。

解决方法: 确保在 krb5.conf 文件的 admin_server 行中为主 KDC 指定了正确的主机名。

Bad lifetime value

原因: 提供的生命周期值无效或格式不正确。

解决方法: 确保提供的值与 kinit(1) 手册页中“时间格式”一节相符。

Bad start time value

原因: 提供的开始时间值无效或格式不正确。

解决方法: 确保提供的值与 kinit(1) 手册页中“时间格式”一节相符。

Cannot contact any KDC for requested realm

原因: 请求的领域中没有 KDC 响应。

解决方法: 确保至少可以访问一个 KDC(主从皆可),或 krb5kdc 守护进程正在 KDC 上运行。有关已配置的 KDC (kdc = kdc-name) 的列表,请查看 /etc/krb5/krb5.conf 文件。

Cannot determine realm for host: host is 'hostname'

原因: Kerberos 无法确定主机的领域名称。

解决方法: 确保存在缺省领域名称,或在 Kerberos 配置文件 (krb5.conf) 中设置了域名映射。

Cannot find a kadmin KDC entry in krb5.conf(4) or DNS Service Location records for realm ' realmname'

Cannot find a kpassword KDC entry in krb5.conf(4) or DNS Service Location records for realm 'realmname'

Cannot find a master KDC entry in krb5.conf(4) or DNS Service Location records for realm 'realmname'

Cannot find any KDC entries in krb5.conf(4) or DNS Service Location records for realm 'realmname'

原因: krb5.conf 文件或 DNS 服务器记录配置不正确。

解决方法: 确保 Kerberos 配置文件 (/etc/krb5/krb5.conf) 或 KDC 的 DNS 服务器记录已配置正确。

Cannot find address for 'hostname': 'error-string'

原因: 在 DNS 记录中找不到给定主机名的地址。

解决方法: 修复 DNS 中的主机记录,或更正 DNS 查找进程中的错误。

Cannot find KDC for requested realm

原因: 在请求的领域中找不到 KDC。

解决方法: 确保 Kerberos 配置文件 (krb5.conf) 在 realm 部分指定了 KDC。

cannot initialize realm realm-name

原因: KDC 可能没有存储文件。

解决方法: 确保 KDC 具有存储文件。否则,请使用 kdb5_util 命令创建一个存储文件,然后尝试重新启动 krb5kdc 命令。

Cannot resolve KDC for requested realm

原因: Kerberos 无法确定领域的任何 KDC。

解决方法: 确保 Kerberos 配置文件 (krb5.conf) 在 realm 部分指定了 KDC。

Cannot resolve network address for KDCs 'hostname' discovered via DNS Service Location records for realm 'realm-name'

Cannot resolve network address for KDCs 'hostname' specified in krb5.conf(4) for realm 'realm-name'

原因: krb5.conf 文件或 DNS 服务器记录配置不正确。

解决方法: 确保 Kerberos 配置文件 (/etc/krb5/krb5.conf) 或 KDC 的 DNS 服务器记录已正确配置。

Cannot reuse password

原因: 指定的口令之前已被该主体使用。

解决方法: 请选择一个以前未曾选用的口令,至少不应使用 KDC 数据库中为每个主体保存的那些口令。该策略由主体的策略强制执行。

Can't get forwarded credentials

原因: 无法建立凭证转发。

解决方法: 确保主体具有可转发的凭证。

Can't open/find Kerberos configuration file

原因: Kerberos 配置文件 (krb5.conf) 不可用。

解决方法: 确保 krb5.conf 文件位于正确的位置,并具有合适的权限。该文件应可由 root 写入,并可由其他任何用户读取。

Client 'principal ' not found in Kerberos database

原因: Kerberos 数据库中缺少主体。

解决方法: 将客户机主体添加到 Kerberos 数据库。

Client 'principal' pre-authentication failed

原因: 对主体的验证失败。

解决方法: 确保用户使用的是正确的口令。

Client did not supply required checksum--connection rejected

原因: 未与客户机协商使用校验和进行验证。客户机使用的可能是不支持初始连接支持的早期 Kerberos V5 协议。

解决方法: 确保客户机使用的是支持初始连接支持的 Kerberos V5 协议。

Client/server realm mismatch in initial ticket request: 'client-principal' requesting ticket 'service-principal'

原因: 在初始票证请求中,客户机与服务器之间的领域不匹配。

解决方法: 确保与之通信的服务器与客户机处于同一领域,或者确保领域配置正确。

Client or server has a null key

原因: 主体拥有空密钥。

解决方法: 使用 kadmin 的 cpw 命令修改主体,使其拥有非空密钥。

Clock skew too great: 'client' requesting ticket 'service-principal ' from KDC 'KDC-hostname' ( KDC-time).Skew is value

Clock skew too great: 'client' AP request with ticket for 'service-principal '.Skew is value (allowable value)

原因: 客户机上报告的时间与 KDC 服务器或应用服务器上报告的时间之间存在的差异过大。

解决方法: 配置网络时间协议 (Network Time Protocol, NTP) 以保持时钟同步。有关更多信息,请参见同步 KDC 与 Kerberos 客户机的时钟。

Communication failure with server while initializing kadmin interface

原因: 为管理服务器指定的主机(也称为主 KDC)没有运行 kadmind 守护进程。

解决方法: 确保为主 KDC 指定了正确的主机名。如果指定了正确的主机名,请确保 kadmind 正在指定的主 KDC 上运行。

Credentials cache file permissions incorrect

原因: 您对凭证高速缓存 (/tmp/krb5cc_uid) 没有相应的读写权限。

解决方法: 请确保您拥有对凭证高速缓存的读写权限。

Credentials cache I/O operation failed XXX

原因: Kerberos 在向系统的凭证高速缓存 (/tmp/krb5cc_uid) 进行写入时出现问题。

解决方法: 请使用 df 命令确认尚未删除凭证高速缓存,并且设备中还有剩余空间。

Decrypt integrity check failed

原因: 您的票证可能无效。

解决方法: 请检验以下两种情况:

  • 确保您的凭证有效。使用 kdestroy 销毁票证,然后使用 kinit 创建新的票证。

  • 确保目标主机的密钥表文件的服务密钥版本正确。使用 kadmin 查看 Kerberos 数据库中服务主体(例如 host/FQDN-hostname)的密钥版本号。另外,在目标主机上使用 klist -k,以确保该主机具有相同的密钥版本号。

Decrypt integrity check failed for client 'principal' and server 'hostname'

原因: 您的票证可能无效。

解决方法: 确保您的凭证有效。使用 kdestroy 命令销毁票证,然后使用 kinit 命令创建新票证。

Encryption could not be enabled. Goodbye.

原因: 无法与服务器协商加密。

解决方法: 通过使用 toggle encdebug 命令调用 telnet 命令启动验证调试,并查看调试消息以获取更多线索。

Failed to find realm for principal in keytab

原因: principal 中包含的领域名称与密钥表文件中存储的主体领域名称不匹配。

解决方法: 确保主体使用的是正确的领域。

failed to obtain credentials cache

原因: 在 kadmin 初始化期间,kadmin 尝试获取 admin 主体的凭证时失败。

解决方法: 确保在执行 kadmin 时使用正确的主体和口令。

Field is too long for this implementation

原因: 基于 Kerberos 的应用程序所发送的消息太长。如果传输协议是 UDP,则可能会生成此错误。UDP 的缺省最大消息长度是 65535 字节。此外,对通过 Kerberos 服务发送的协议消息中的单个字段也有限制。

解决方法: 确认您没有在 KDC 服务器的 /etc/krb5/kdc.conf 文件中将传输协议限制为 UDP。

GSS-API (or Kerberos) error

原因: 此消息是通用的 GSS-API 或 Kerberos 错误消息,可能由几种不同的问题所导致。

解决方法: 检查 /var/krb5/kdc.log 文件,找出发生此错误时记录的更具体的错误消息。

Hostname cannot be canonicalized for 'hostname': 'error-string'

原因: Kerberos 客户机找不到服务器的全限定主机名。

解决方法: 确保在 DNS 中定义了服务器主机名,且主机名至地址的映射和地址至主机名的映射保持一致。

Illegal cross-realm ticket

原因: 发送的票证所跨的领域不正确。领域可能未设置正确的信任关系。

解决方法: 确保使用的领域具有正确的信任关系。

Improper format of Kerberos configuration file

原因: Kerberos 配置文件包含无效项。

解决方法: 确保 krb5.conf 文件中的所有关系后面都跟有 "=" 符号和值。另外,请确认每个子段中的括号都是成对出现的。

Inappropriate type of checksum in message

原因: 消息中包含无效的校验和类型。

解决方法: 检查在 krb5.conf 和 kdc.conf 文件中指定的有效校验和类型。

Incorrect net address

原因: 网络地址不匹配。正在转发的票证中的网络地址与处理该票证的网络地址不同。转发票证时可能会出现此消息。

解决方法: 确保网络地址正确。使用 kdestroy 销毁票证,然后使用 kinit 创建新的票证。

Invalid credential was supplied

Service key not available

原因: 凭证高速缓存中的服务票证可能不正确。

解决方法: 尝试使用该服务之前,请销毁当前凭证高速缓存并重新运行 kinit。

Invalid flag for file lock mode

原因: 出现 Kerberos 内部错误。

解决方法: 请报告错误。

Invalid message type specified for encoding

原因: Kerberos 无法识别基于 Kerberos 的应用程序发送的消息类型。

解决方法: 如果使用的基于 Kerberos 的应用程序是由您的站点或供应商开发的,请确保此应用程序正确使用 Kerberos。

Invalid number of character classes

原因: 为主体指定的口令包含的口令类数目不足,达不到主体策略强制要求的数量。

解决方法: 确保指定的口令包含策略要求的最少口令类数。

KADM err: Memory allocation failure

原因: 用于运行 kadmin 的内存不足。

解决方法: 释放内存并再次尝试运行 kadmin。

kadmin: Bad encryption type while changing host/FQDN's key

原因: Solaris 10 8/07 发行版之后的基本版本中包括更多的缺省加密类型。客户机请求的加密类型可能不受运行该软件旧版本的 KDC 支持。

解决方法: 有几种解决方案可以解决这一问题。最简单的一种首先列出:

  1. 向 KDC 服务器添加 SUNWcry 和 SUNWcryr 软件包。这可以增加 KDC支持的加密类型数量。

  2. 在客户机上的 krb5.conf 中设置 permitted_enctypes,使其不包括 aes256 加密类型。将需要对每台新的客户机执行此步骤。

KDC can't fulfill requested option

原因: KDC 不允许请求的选项。一种可能是正在请求以后生效或可转发的选项,而 KDC 不允许这些选项。另一种可能是请求了 TGT 更新,但没有可更新的 TGT。

解决方法: 确定是请求了 KDC 不允许的选项,还是票证类型不可用。

KDC policy rejects request

原因: KDC 策略不允许该请求。例如,对 KDC 的请求中不含 IP 地址。或者,请求了转发,KDC 却不允许。

解决方法: 确保使用的 kinit 具有正确的选项。如有必要,请修改与主体关联的策略或更改主体的属性以允许该请求。可以使用 kadmin 修改策略或主体。

KDC reply did not match expectation: KDC not found. Probably got an unexpected realm referral

原因: KDC 回复中未包含所需的主体名称,或者响应中的其他值不正确。

解决方法: 确保您与之通信的 KDC 符合 RFC4120,发送的请求是 Kerberos V5 请求,并且该 KDC 可用。

kdestroy: Could not obtain principal name from cache

原因: 凭证高速缓存缺失或已损坏。

解决方法: 检查提供的高速缓存位置是否正确。如有必要,使用 kinit 删除 TGT 并获取新的 TGT。

kdestroy: No credentials cache file found while destroying cache

原因: 凭证高速缓存 (/tmp/krb5c_ uid) 缺失或已损坏。

解决方法: 检查提供的高速缓存位置是否正确。如有必要,使用 kinit 删除 TGT 并获取新的 TGT。

kdestroy: TGT expire warning NOT deleted

原因: 凭证高速缓存缺失或已损坏。

解决方法: 检查提供的高速缓存位置是否正确。如有必要,使用 kinit 删除 TGT 并获取新的 TGT。

Kerberos authentication failed

原因: Kerberos 口令错误,或该口令可能与 UNIX 口令不同步。

解决方法: 如果口令不同步,则必须指定其他口令才能完成 Kerberos 验证。用户可能会忘记其原始口令。

Kerberos V5 refuses authentication

原因: 无法与服务器协商验证。

解决方法: 通过使用 toggle authdebug 命令调用 telnet 命令启动验证调试,并查看调试消息以获取更多线索。另外,确保具有有效凭证。

Key table entry not found

原因: 网络应用服务器的密钥表文件中不存在服务主体的对应项。

解决方法: 将相应的服务主体添加到服务器的密钥表文件中,以便该文件可提供基于 Kerberos 的服务。

Key table file 'filename' not found

原因: 指定的密钥表文件不存在。

解决方法: 创建该密钥表文件。

Key version number is not available for principal principal

原因: 密钥的密钥版本与应用服务器中的密钥版本不匹配。

解决方法: 使用 klist -k 命令检查应用服务器中的密钥版本。

Key version number for principal in key table is incorrect

原因: 密钥表文件中主体的密钥版本与 Kerberos 数据库中的版本不同。可能已更改了服务密钥,也可能正在使用旧服务票证。

解决方法: 如果更改了服务密钥(例如,通过使用 kadmin),则需要提取新密钥,并将其存储在正在运行该服务的主机的密钥表文件中。

或者,您也可能正在使用具有较旧密钥的旧服务票证。在这种情况下,可能需要运行 kdestroy 命令,然后再次运行 kinit 命令。

kinit: gethostname failed

原因: 本地网络配置中的错误导致 kinit 失败。

解决方法: 确保主机配置正确。

login: load_modules: can not open module /usr/lib/security/pam_krb5.so.1

原因: Kerberos PAM 模块缺失,或不是有效的可执行二进制文件。

解决方法: 确保 Kerberos PAM 模块在 /usr/lib/security 目录下,并且是有效的可执行二进制文件。另外,请确保 /etc/pam.conf 文件包含指向 pam_krb5.so.1 的正确路径。

Looping detected getting initial creds: 'client-principal' requesting ticket 'service-principal'. Max loops is value. Make sure a KDC is available.

原因: Kerberos 多次尝试获取初始票证,但均失败。

解决方法: 确保至少有一个 KDC 正在响应验证请求。

Master key does not match database

原因: 装入的数据库转储不是基于包含主密钥的数据库创建的。主密钥位于 /var/krb5/.k5.REALM 中。

解决方法: 确保装入的数据库转储中的主密钥与 /var/krb5/.k5.REALM 中的主密钥匹配。

Matching credential not found

原因: 未找到与请求匹配的凭证。凭证高速缓存中没有您的请求需要的凭证。

解决方法: 使用 kdestroy 销毁票证,然后使用 kinit 创建新的票证。

Message out of order

原因: 使用顺序保密机制发送的消息到达时发生顺序混乱。某些消息可能已在传输过程中丢失。

解决方法: 应该重新初始化 Kerberos 会话。

Message stream modified

原因: 计算出的校验和与消息校验和不匹配。消息在传输过程中可能已被修改,这表明存在安全泄露。

解决方法: 确保消息在网络中正确发送。由于此消息还可能表明消息在发送过程中被篡改,因此请使用 kdestroy 销毁票证,然后重新初始化所使用的 Kerberos 服务。

常见的 Kerberos 错误消息 (N-Z)

本节按字母顺序 (N-Z) 列出了 Kerberos 命令、Kerberos 守护进程、PAM 框架、GSS 接口、NFS 服务和 Kerberos 库的常见错误消息。

No credentials cache file found

原因: Kerberos 找不到凭证高速缓存 (/tmp/krb5cc_uid)。

解决方法: 确保凭证文件存在且可读。否则,请再次尝试执行 kinit。

No credentials were supplied, or the credentials were unavailable or inaccessible

No credential cache found

原因: 用户的凭证高速缓存不正确或不存在。

解决方法: 用户应在尝试启动服务之前运行 kinit。

No credentials were supplied, or the credentials were unavailable or inaccessible

No principal in keytab (' filename') matches desired name principal

原因: 尝试验证服务器时发生错误。

解决方法: 确保主机主体或服务主体位于服务器的密钥表文件中。

Operation requires "privilege" privilege

原因: 所使用的 admin 主体未在 kadm5.acl 文件中配置相应的特权。

解决方法: 使用具有相应特权的主体。或者,通过修改 kadm5.acl 文件来配置所使用的主体,使其具有相应特权。通常,名称中包含 /admin 的主体都具有相应的特权。

PAM-KRB5 (auth): krb5_verify_init_creds failed: Key table entry not found

原因: 远程应用程序尝试在本地 /etc/krb5/krb5.keytab 文件中读取主机的服务主体,但不存在任何主体。

解决方法: 将主机的服务主体添加到主机的密钥表文件中。

Password is in the password dictionary

原因: 指定的口令位于正在使用的口令字典中。您选择的口令不适合用作口令。

解决方法: 请选用包含混合口令类的口令。

Permission denied in replay cache code

原因: 无法打开系统的重放高速缓存。首次运行服务器时所使用的用户 ID 可能与当前的用户 ID 不同。

解决方法: 确保重放高速缓存具有相应的权限。重放高速缓存存储在运行基于 Kerberos 的服务器应用程序的主机上。对于非 root 用户,重放高速缓存文件名为 /var/krb5/rcache/rc_service_name_uid。对于 root 用户,重放高速缓存文件名为 /var/krb5/rcache/root/rc_service_name。

Protocol version mismatch

原因: 很可能向 KDC 发送了 Kerberos V4 请求。Kerberos 服务仅支持 Kerberos V5 协议。

解决方法: 确保应用程序使用的是 Kerberos V5 协议。

Request is a replay

原因: 请求已经发送到该服务器,并进行了处理。票证可能已被盗用,其他用户正在尝试重用这些票证。

解决方法: 等待几分钟,然后重新发送请求。

Requested principal and ticket don't match: Requested principal is 'service-principal' and TGT principal is 'TGT-principal'

原因: 您正连接的服务主体和您拥有的服务票证不匹配。

解决方法: 确保 DNS 正常运行。如果使用的是其他供应商的软件,请确保该软件使用的主体名称正确。

Requested protocol version not supported

原因: 很可能向 KDC 发送了 Kerberos V4 请求。Kerberos 服务仅支持 Kerberos V5 协议。

解决方法: 确保应用程序使用的是 Kerberos V5 协议。

Service key service-principal not available

原因: 应用服务器的密钥表文件中不存在指定的服务主体。

解决方法: 确保服务主体与应用服务器的密钥表文件中的服务主体匹配,或包含在密钥表文件中。

Server refused to negotiate authentication, which is required for encryption. Good bye.

原因: 远程应用程序无法接受或已配置为不接受来自客户机的 Kerberos 验证。

解决方法: 提供可以协商验证的远程应用程序,或配置该应用程序以使用相应标志来启用验证。

Server refused to negotiate encryption. Good bye.

原因: 无法与服务器协商加密。

解决方法: 通过使用 toggle encdebug 命令调用 telnet 命令启动验证调试,并查看调试消息以获取更多线索。

Server rejected authentication (during sendauth exchange)

原因: 您正在尝试与其通信的服务器拒绝了验证。此错误通常出现在 Kerberos 数据库传播过程中。一些常见的原因可能是 kpropd.acl 文件、DNS 或密钥表文件存在问题。

解决方法: 如果在运行 kprop 以外的应用程序时收到此错误,请检查服务器的密钥表文件是否正确。

Server service-principal not found in Kerberos database

原因: 服务主体不正确,或主体数据库中缺少服务主体。

解决方法: 确保服务主体正确,并且位于数据库中。

Target name principal ' principal' does not match service-principal

原因: 所使用的服务主体与应用服务器所使用的服务主体不匹配。

解决方法: 在应用服务器中,确保服务主体包含在密钥表文件中。对于客户机,确保使用的是正确的服务主体。

The ticket isn't for us

Ticket/authenticator don't match

原因: 票证与验证者不匹配。请求中的主体名称可能与服务主体的名称不匹配。原因可能是所发送票证使用的是主体的 FQDN 名称,而服务需要非 FQDN 名称,或者所发送票证使用的是主体的非 FQDN 名称,而服务需要 FQDN 名称。

解决方法: 如果在运行 kprop 以外的应用程序时收到此错误,请检查服务器的密钥表文件是否正确。

Ticket expired

原因: 您的票证已到期。

解决方法: 使用 kdestroy 销毁票证,然后使用 kinit 创建新的票证。

Ticket is ineligible for postdating

原因: 主体不允许其票证在以后生效。

解决方法: 使用 kadmin 修改主体,以允许以后生效。

Ticket not yet valid: 'client-principal ' requesting ticket 'service-principal' from 'kdc-hostname' (time). TGT start time is time.

原因: 以后生效的票证尚未生效。

解决方法: 请使用正确的日期创建新票证,或等待当前票证生效。

Truncated input file detected

原因: 操作中使用的数据库转储文件不是完整的转储文件。

解决方法: 重新创建转储文件,或使用其他数据库转储文件。

Unable to securely authenticate user ... exit

原因: 无法与服务器协商验证。

解决方法: 通过使用 toggle authdebug 命令调用 telnet 命令启动验证调试,并查看调试消息以获取更多线索。另外,确保具有有效凭证。

Unknown encryption type: name

原因: 凭证中包含的加密类型无法使用。

解决方法: 通过 klist -e 命令确定客户机所使用的加密类型。确保应用服务器至少支持一种加密类型。

Wrong principal in request

原因: 票证中包含无效的主体名称。此错误可能表明 DNS 或 FQDN 存在问题。

解决方法: 确保服务的主体与票证中的主体匹配。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/276399.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号