Sun 企业鉴别机制指南

第 4 章 SEAM 错误消息和故障排除

本章为您可能会收到的错误消息提供解析,并为使用 SEAM 时遇到的各种各样问题提供一些故障排除窍门。这是本章中的错误消息和故障排除信息的一个列表。

SEAM 错误消息

本节提供关于 SEAM 错误消息的信息,其中包括每个错误发生的愿意和一个将其修正的方法。

SEAM 管理工具错误消息

错误消息

无法查看授权对象或策略的列表; 使用名称字段。
发生原因

您进行登录所借助的 admin授权对象在 Kerberos ACL 文件中 (kadm5.acl) 没有列表特权 (l),因而您无法查看授权对象或策略列表。

解决办法

您在名称字段中必须录入授权对象和策略名称,对其进行操作,或者借助一个拥有适当特权的授权对象进行登录。

错误消息

JNI: Java 数组创建失败
JNI: Java 类检索失败
JNI: Java 字段检索失败
JNI: Java 方法检索失败
JNI: Java 对象检索失败
JNI: Java 对象字段检索失败
JNI: Java 字符串访问失败
JNI: Java 字符串创建失败
发生原因

SEAM 管理工具 (gkadmin) 所使用的 Java 本地接口有一个严重问题。

解决办法

退出 gkadmin 并重新将其启动; 如果依旧存在,请报告一个缺陷。

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

本节为 SEAM 命令、 SEAM 守候程序、 PAM 框架结构, GSS 接口和 Kerberos 库提供一个字母顺序的更多的常见的错误消息的列表 (A-M)。

错误消息

major_error major_error gssapi 导入名称错误
发生原因

导入一个服务名称过程中发生了一个错误。

解决办法

请确保 主机ftp 服务授权对象位于主机的密钥表文件中。

错误消息

所有的鉴别系统已被禁用; 连接遭到拒绝
发生原因

该版本的 rlogind 不支持任何鉴别机制。

解决办法

请确保 rlogind 调用时带有 -k 选项。实际上,这应当是 inetd.conf 文件中所指定的默认情形。

错误消息

必须使用另一鉴别机制才能访问该主机
发生原因

鉴别无法被完成。

解决办法

请确保客户机将 Kerberos V5 用于鉴别。

错误消息

鉴别协商业已失败,而这是加密所必需的。再见。
发生原因

无法与服务器协商完成鉴别。

解决办法

通过调用 telnet 命令 toggle authdebug 启动鉴别调试,并查看调试消息,以获取进一步的线索。另外,请确保您拥有有效的资格。

错误消息

初始化 kadmin 接口过程中不良 krb5 admin 服务器主机名
发生原因

krb5.conf文件中为 admin 服务器 (主 KDC) 配置了一个无效主机名。

解决办法

请确保在 krb5.conf 文件中,为 admin 服务器 (主 KDC) 指定了正确的主机名。

错误消息

无法为所请求的区域联系任何 KDC
发生原因

在所请求的区域中无 KDC 响应。

解决办法

请确保至少有一个 KDC (或主或从) 是可达到的,或者 krb5kdc 守候程序正在 KDC 上运行。请查看 /etc/krb5/krb5.conf,获取已配置 KDC 的列表 (kdc = kdc_name)。

错误消息

无法为主机确定区域
发生原因

Kerberos 无法为主机确定区域名称。

解决办法

请确保 Kerberos 配置文件 (krb5.conf) 中设置有一个默认的区域名称或域名称映射。

错误消息

无法密写网络
发生原因

为数据加密时发生了问题。

解决办法

检查系统中是否有其它的可能问题。查验其它的 syslog 消息,获取进一步的线索。

错误消息

无法为所请求的区域找到 KDC
发生原因

在所请求的区域中没有找到 KDC。

解决办法

请确保 Kerberos 配置文件 (krb5.conf) 在 realm 一节中指定有一个 KDC。

错误消息

无法初始化区域 realm_name
发生原因

KDC 可能没有一个贮藏文件。

解决办法

请确保 KDC 拥有一个贮藏文件。不然,就请使用 kdb5_util(1M) 命令创建一个并再次尝试运行 krb5kdc (/etc/init.d/kdc)。

错误消息

无法为所请求的区域解析 KDC
发生原因

Kerberos 无法为区域确定任何 KDC。

解决办法

请确保 Kerberos 配置文件在realm 一节中 (krb5.conf) 指定有一个 KDC。

错误消息

无法重新使用口令
发生原因

您录入的口令业已在以前为该授权对象使用过。

解决办法

选择一个以前尚未选用的口令,至少不要在 KDC 数据库中为每个授权对象所保持的若干口令内 (这由授权对象的策略强制执行)。

错误消息

无法获得已转发资格
发生原因

资格转发无法得到建立。

解决办法

请确保授权对象拥有可转发资格。

错误消息

无法打开/找到 Kerberos 配置文件
发生原因

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

解决办法

请确保 krb5.conf 文件在正确的位置是可用的且拥有正确的许可 (其应当可为 root 写入且可为其他每个人读出)。

错误消息

客户机没有给出所要求的校验和--连接遭到拒绝
发生原因

未能借助校验和与客户机协商完成鉴别。客户机可能正在使用一个不支持初始连接支持的旧的 Kerberos V5 协议。

解决办法

请确保客户机正在使用一个支持初始连接支持的 Kerberos V5 协议。

错误消息

在初始票券请求中,客户机/服务器区域不匹配
发生原因

在初始票券请求中,客户机和服务器之间发生了区域不匹配。

解决办法

请确保您正在与之通信的服务器与客户机位于同一区域或区域配置是正确的。

错误消息

客户机或服务器拥有一个空密钥
发生原因

授权对象拥有一个空密钥。

解决办法

通过使用 kadmin(1M)cpw 命令,修改授权对象,使之拥有一个非空密钥。

错误消息

在初始化 kadmin 接口过程中与服务器通信失败
发生原因

为 admin 服务器录入的主机 (主 KDC) 没有运行 kadmind

解决办法

请确保您为主 KDC 指定了正确的主机名。如果您指定了正确的主机名,请确保 kadmind 正在您所指定的主 KDC 上运行。

错误消息

配置错误: 借助 -c 来要求校验和,与允许 Kerberos V4 连接不一致
发生原因

未能借助校验和与客户机协商完成鉴别。客户机可能正在使用一个不支持初始连接支持的旧的 Kerberos V5 协议。

解决办法

请确保客户机正在使用一个支持初始连接支持的 Kerberos V5 协议。

错误消息

资格高速缓存文件许可不正确
发生原因

您对资格高速缓存没有适当的读或写许可 (/tmp/krb5cc_uid)。

解决办法

请确保您对资格高速缓存没有适当的读和写许可。

错误消息

资格高速缓存 I/O 操作失败XXX
发生原因

Kerberos 写入系统的资格高速缓存时遇到一个问题 (/tmp/krb5cc_uid)。

解决办法

请通过使用 df 命令,确保资格高速缓存尚未被去除且设备上留有空间。

错误消息

解密完整性检查失败
发生原因

您可能拥有一个无效票券。

解决办法
  1. 请确保您的资格是有效的。借助 kdestroy 销毁您的票券,并借助 kinit 创建新的票券。

  2. 请确保目标主机拥有一个带有正确版本的服务密钥的密钥表。。使用 kadmin(1M) 来查看 Kerberos 数据库中的服务授权对象的密钥版本号 (例如, host/FQDN_hostname),并在目标主机上使用 klist -k,以确保其拥有同一密钥版本号。

错误消息

des_read 重试计数超过
发生原因

读取数据过程中反复发生了一个错误。

解决办法

检查系统中是否有其它的可能问题。查验其它的 syslog 消息,获取进一步的线索。

错误消息

df: 无法 statvfs filesystem: 无效变元
发生原因

df 命令无法访问当前所装配的 Kerberized NFS 文件系统来生成其报告,因为您不再拥有适当的 root 资格。将您的针对一个已装配 Kerberized 文件系统的资格销毁,并不自动撤销装配文件系统。

解决办法

您必须创建新的 root 资格才能访问 Kerberized 文件系统。如果您不再需要访问 Kerberized 文件系统,就请撤销装配文件系统。

错误消息

加密无法被启用。再见。
发生原因

无法与服务器协商完成加密。

解决办法

通过调用 telnet 命令 toggle encdebug 启动鉴别调试,并查看调试消息,以获取进一步的线索。

错误消息

没有成功地协商完成加密。再见。
发生原因

无法协商完成加密。

解决办法

检查 KDC 日志文件中是否有错误消息。

错误消息

已到达资格高速缓存的末尾
发生原因

读取资格高速缓存过程中发生了一个错误 (/tmp/krb5cc_uid)。

解决办法

请确保资格高速缓存为可读且包含数据。

错误消息

未能获得资格高速缓存
发生原因

kadmin 初始化过程中,当 kadmin 试图为 admin 授权对象获得资格时,发生了一个故障。

解决办法

请确保您在执行 kadmin 时使用了正确的授权对象和/或口令。

错误消息

字段对该实现方案来讲太长
发生原因

一个 Kerberized 应用程序所正在发送的消息尺寸太长。 Kerberos 可以处理的最大消息尺寸为 65535 个字节。另外,对 Kerberos 所发送的一个协议消息中的单个字段有所限制。

解决办法

请确保您的 Kerberized 应用程序正在发送有效的消息尺寸。

错误消息

GSS-API (或 Kerberos) 错误
发生原因

这是一个类属 GSS-API 或 Kerberos 错误消息,可能是由多个不同的问题导致的。

解决办法

查看 /etc/krb5/kdc.log 文件,找到在该错误发生时所记录的更加具体的 GSS-API 错误消息。

错误消息

主机名无法被正规化
发生原因

Kerberos 无法使主机名完全合格。

解决办法

请确保主机名位于 DNS 中,且主机名到地址和地址到主机名的映射保持一致。

错误消息

非法跨区票券
发生原因

所发送的票券没有正确的跨区。区域可能尚未设置有正确的托管关系。

解决办法

请确保您正在使用的区域拥有正确的托管关系。

错误消息

不当格式的 Kerberos 配置文件
发生原因

Kerberos 配置文件 (krb5.conf) 拥有无效条目。

解决办法

请确保 krb5.conf 文件中的所有的关系后面跟有 "=" 符号和一个值,并验证每个子节均有一对括号。

错误消息

消息中有不当类型的校验和
发生原因

消息包含一个无效校验和类型。

解决办法

检查 krb5.confkdc.conf 文件中指定有哪写有效的校验和类型。

错误消息

不正确网络地址
发生原因

网络地址中有一处不匹配。正要转发的票券中的网络地址与票券得到处理时所在的网络地址不同。转发票券时可能会发生这种情况。

解决办法

请确保网络地址正确; 借助 kdestroy 销毁您的票券,并借助 kinit 创建新的票券。

错误消息

文件锁定模式的标识无效
发生原因

发生了一个内部 Kerberos 错误。

解决办法

请报告一个缺陷。

错误消息

为编码指定了无效消息类型
发生原因

Kerberos 无法识别 Kerberized 应用程序所发送的消息类型。

解决办法

如果您正在使用您的站点或一个供应商所开发的一个 Kerberized 应用程序,则请确保其正在正确地使用 Kerberos。

错误消息

无效的字符类数目
发生原因

您为授权对象录入的口令没有包含足够的口令类,而这正是授权对象的策略所强制要求的。

解决办法

请确保您录入一个带有策略所要求的最低口令类数目的口令。

错误消息

KADM 错误: 内存分配失败
发生原因

没有足够的内存来运行 kadmin

解决办法

释放内存并再次尝试运行 kadmin

错误消息

KDC 无法完成所请求的选项
发生原因

KDC 不允许所请求的选项。一个可能的问题可能是超期或可转发选项正得到请求,而 KDC 不允许此类选项。另一问题可能是您请求续延一个 TGT,但是您并不拥有一个可续延 TGT。

解决办法

确定是否 KDC 不允许您正在请求的选项,或者是否您正在请求一个您并没有的东西。

错误消息

KDC 策略拒绝请求
发生原因

KDC 策略不允许请求。例如,向 KDC 发出的请求在其请求中没有一个 IP 地址,或者转发得到请求,但 KDC 不允许该请求。

解决办法

请确保您使用 kinit 时带有正确的选项。如有必要,请修改与授权对象相关联的策略或更改授权对象的属性,以便允许该请求。您可以通过使用 kadmin(1M) 来修改策略或授权对象。

错误消息

KDC 回复与所期待的不匹配
发生原因

KDC 回复不包含所期待的授权对象名称,或者响应中其它的值不正确。

解决办法

请确保您正在与之通信的 KDC 符合 RFC1510,您正在发送的请求是一个 Kerberos V5 请求,或该 KDC 可用。

错误消息

Kerberos V5 拒绝鉴别
发生原因

无法与服务器协商完成鉴别。

解决办法

通过调用 telnet 命令 toggle authdebug 启动鉴别调试,并查看调试消息,以获取进一步的线索。另外,请确保您拥有有效的资格。

错误消息

密钥表条目未找到
发生原因

网络应用程序服务器的密钥表中没有针对服务授权对象的条目。

解决办法

向服务器的密钥表添加适当的服务授权对象,以便其可以提供 Kerberized 服务。

错误消息

密钥表中授权对象的密钥版本号不正确
发生原因

密钥表和 Kerberos 数据库中的授权对象的密钥版本不同。不是一个服务的密钥业已被更改,就是您可能正在使用一个旧的服务票券。

解决办法

如果一个服务的密钥业已被更改 (例如,通过使用 kadmin),则您必须提取新的密钥并将其存储在主机的密钥表,即服务正在运行的位置。

另外,您也可能正在使用一个拥有一个较旧的密钥的旧的服务票券。您可能需要进行一次 kdestroy,然后再次运行一次 kinit

错误消息

login: load_modules: 无法打开模块 /usr/lib/security/pam_krb5.so.1
发生原因

不是 Kerberos PAM 模块缺失,就是并非一个有效的可执行二进制文件。

解决办法

请确保 Kerberos PAM 模块位于 /usr/lib/security 中,且是一个有效的可执行二进制文件。另外,请确保 /etc/pam.conf 包含到 pam_krb5.so.1 的正确的路径。

错误消息

在 krb5_get_in_tkt 内监测到循环
发生原因

Kerberos 进行了多次尝试来获得初始票券,但均失败。

解决办法

请确保至少一个 KDC 在对鉴别请求作出响应。

错误消息

主密钥与数据库不匹配
发生原因

所加载的数据库转储并非是从一个包含主密钥的数据库创建的,它位于 /var/krb5/.k5.REALM 中。

解决办法

请确所加载的数据库转储中的主密钥与位于 /var/krb5/.k5.REALM 的主密钥匹配。

错误消息

相匹配的资格未找到
发生原因

针对请求的相匹配的资格未找到。资格高速缓存中没有您的请求所要求的资格。

解决办法

借助 kdestroy 销毁您的票券,并借助 kinit 创建新的票券。

错误消息

消息顺序错误
发生原因

使用顺序隐私所发送的消息到达时顺序错误。一些消息可能在传递时丢失了。

解决办法

您应当重新初始化 Kerberos 对话。

错误消息

消息流遭到修改
发生原因

计算得出的校验和与消息校验和之间有一处不匹配。消息可能业已在传递过程中遭到修改,而这可能指示有一个安全漏洞。

解决办法

请确保消息正确地跨越网络得到发送。因为该消息还可能指示消息在发送过程中可能遭到了篡改,所以请使用 kdestroy 销毁您的票券,并重新初始化您正在使用的 Kerberos 服务。

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

本节为 SEAM 命令、 SEAM 守候程序、 PAM 框架结构和 Kerberos 库提供一个字母顺序的更多的常见的错误消息的列表 (N-Z)。

错误消息

没有鉴别系统得到启用; 所有连接均将遭到拒绝
发生原因

该版本的 rlogind 不支持任何鉴别机制。

解决办法

请确保 rlogind 调用时带有 -k 选项。实际上,这应当是 inetd.conf 文件中所指定的默认情形。

错误消息

没有找到资格高速缓存文件
发生原因

Kerberos 无法找到资格高速缓存 (/tmp/krb5cc_uid)。

解决办法

请确保资格文件存在且可读。如果不存在,就请再次尝试进行一次 kinit

错误消息

操作要求有 "privilege" 特权
发生原因

正在使用的 admin授权对象在 kadm5.acl 文件中,未配置有适当的特权。

解决办法

使用一个拥有适当特权的授权对象,或者通过修改 kadm5.acl 文件,将正在使用的授权对象配置为拥有适当的特权。通常,一个名称中带有 "/admin" 部分的授权对象就拥有适当的特权。

错误消息

PAM-KRB5: Kerberos V5 鉴别失败: 口令不正确
发生原因

您的 UNIX 口令和 Kerberos 口令不同。大多数的非 Kerberized 命令,诸如 login,通过 PAM 设置为,通过使用与您为您的 UNIX 口令所指定的口令相同的口令,自动与 Kerberos 进行鉴别。如果您的口令不同,则 Kerberos 鉴别失败。

解决办法

在得到提示时,您必须录入您的 Kerberos 口令。

错误消息

口令位于口令字典
发生原因

您所录入的口令位于一个正在使用的口令字典中。该选择不适于用作一个口令。

解决办法

选择一个拥有混合口令类的口令。

错误消息

重放高速缓存代码的许可遭到拒绝
发生原因

系统的重放高速缓存无法被打开。第一次运行服务器时所使用的用户 ID,可能与您当前的用户 ID 不同。

解决办法

请确保重放高速缓存拥有适当的许可。重放高速缓存存储于 Kerberized 服务器应用程序正在运行的主机上 (/usr/tmp/rc_service_name)。除了更改对当前的重放高速缓存的许可,您还可以去除重放高速缓存,然后再以一个不同的用户 ID 运行 Kerberized 服务器。

错误消息

协议版本不匹配
发生原因

很有可能是向 KDC 发送了一个 Kerberos V4 请求。 SEAM 只支持 Kerberos V5 协议。

解决办法

请确保您的应用程序正在使用 Kerberos V5 协议。

错误消息

请求是一个重放
发生原因

请求业已被发送到该服务器并得到处理。票券可能业已被偷,而他人正试图重新使用票券。

解决办法

等候几分钟,然后重新发出请求。

错误消息

所请求的授权对象和票券不匹配
发生原因

您正在连接的服务授权对象与您所拥有的服务票券不匹配。

解决办法

请确保 DNS 工作正常。如果您正在使用另一供应商的软件,则请确保它正在正确地使用授权对象名称。

错误消息

所请求的协议版本不被支持
发生原因

很有可能是向 KDC 发送了一个 Kerberos V4 请求。 SEAM 只支持 Kerberos V5 协议。

解决办法

请确保您的应用程序正在使用 Kerberos V5 协议。

错误消息

在初始化 kadmin 接口过程中,krb5.conf 中所要求的参数缺失
发生原因

kr5.conf 文件有一个参数缺失 (诸如 admin_server 参数)。

解决办法

请确定所缺失参数是什么并将其添加到 krb5.conf

错误消息

服务器拒绝协商加密。再见。
发生原因

无法与服务器协商完成加密。

解决办法

通过调用 telnet 命令 toggle encdebug 启动鉴别调试,并查看调试消息,以获得进一步的线索。

错误消息

服务器拒绝鉴别 (在 sendauth 交换过程中)
发生原因

您正试图与之通信的服务器拒绝鉴别。该错误最为经常发生在进行 Kerberos 数据库传播时。一些常见的起因可能是 kpropd.acl 文件、 DNS 或密钥表的问题。

解决办法

如果您是在运行 kprop 以外的应用程序时获得该错误的,则请调查服务器的密钥表是否正确。

错误消息

票券并非针对我们的
或票券/鉴别符不匹配
发生原因

票券和鉴别符之间有一处不匹配。请求中的授权对象名称可能与服务授权对象的名称不匹配,因为票券是借助授权对象的一个 FQDN 名称加以发送的,而服务所期待非 FQDN,反之亦然

解决办法

请确保您正在使用的服务授权对象是正确的。

错误消息

票券已到期
发生原因

您的票券时间业已到期。

解决办法

借助 kdestroy 销毁您的票券,并借助 kinit 创建新的票券。

错误消息

票券不合格,不可用作超期
发生原因

授权对象不允许对其票券进行超期。

解决办法

借助 kadmin(1M) 来修改授权对象,允许超期。

错误消息

票券尚未有效
发生原因

超期票券尚不有效。

解决办法

创建带有正确的日期的新的票券,或者等到当前的票券有效。

错误消息

监测到被截短的输入文件
发生原因

操作中正在使用的数据库转储文件并非一个完整的转储文件。

解决办法

再次创建转储文件,或者使用一个不同的数据库转储文件。

错误消息

无法与 Kerberos V5 连接和提供加密服务,或者,使用常规的 rlogin,无法与 Kerberos V5 连接
发生原因

无法与服务器上的适当的服务建立一个 Kerberized 对话 (kshell 用于 rsh 以及 rcp, ekloginklogin 用于 rlogin)。该可能是由于资格无效。

解决办法
  1. 请确保您的资格有效。借助 kdestroy 销毁您的票券,并借助 kinit 创建新的票券。

  2. 请确保目标主机拥有一个带有正确版本的服务密钥的密钥表。使用 kadmin(1M) 来查看 Kerberos 数据库中的服务授权对象的密钥版本号 (例如, host/FQDN_hostname),并在目标主机来上使用 klist -k,以确保其拥有同一密钥版本号。

  3. 请确保在目标主机上的 /etc/inetd.conf 中有针对服务 (klogin, eklogin,和 kshell) 的条目。

错误消息

无法安全地鉴别用户 ... 退出
发生原因

无法与服务器协商完成鉴别。

解决办法

通过调用 telnet 命令 toggle authdebug 启动鉴别调试,并查看调试消息,以获取进一步的线索。另外,请确保您拥有有效的资格。

错误消息

请求中错误的授权对象
发生原因

票券中有一个无效授权对象名称。这可能是一个 DNS 或 FQDN 问题。

解决办法

请确保服务的授权对象与票券中的授权对象匹配。

错误消息

您正在使用一个不带校验和支持的旧的 Kerberos5 客户机; 只有较新的客户机得到鉴别。
发生原因

未能借助校验和与客户机协商完成鉴别。客户机可能正在使用一个不支持初始连接支持的旧的 Kerberos V5 协议。

解决办法

请确保客户机正在使用一个支持初始连接支持的 Kerberos V5 协议。

SEAM 故障排除

本节提供用于 SEAM 软件的故障排除信息。

krb5.conf 文件格式的问题

如果 krb5.conf 文件并未经正常格式化,则 telnet 命令将失败。然而, dtloginlogin 命令依旧可以成功,即使 krb5.conf 文件被指定为命令所必需的。如果发生此情形,则下列错误消息显示出来:


初始化 krb5 错误: 不当的 Kerberos 配置格式

如果 krb5.conf 文件的格式有一个问题,您就容易受到安全缺口的影响。您应当修正问题,然后再允许使用 SEAM 特性。

传播 Kerberos 数据库时出现问题

如果传播 Kerberos 数据库失败,请在从 KDC 和主 KDC 之间尝试 /usr/krb5/bin/rlogin -x,反之亦然。


注意:

如果 KDC 业已被设置为限定访问,则 rlogin 被禁用而无法用于为该问题排除故障。如要在一个 KDC 上启用 rlogin,您就必须为 /etc/inetd.conf 文件中的 eklogin 条目撤销说明并重新启动 inetd,方法如下:


# ps -eaf | grep inetd       显示 inetd# kill -1 的进程 ID
pid_of_inetd

在您完成对问题的故障排除之后,您必须将 inetd.conf 文件改回到其原来的状态并再次重新启动 inetd


如果rlogin 失效,问则题可能就是 KDC 上的密钥表。如果 rlogin 确实有效,则问题不在密钥表或名称服务,因为 rlogin 和传播软件使用同一 host/host_name 授权对象。这样的话,请确保 kpropd.acl 文件是正确的。

装配一个 Kerberized NFS 文件系统时出现问题

在本示例中,设置允许对不同的接口引用一次,并允许服务器的密钥表中有单独一个服务授权对象,而不是三个服务授权对象。

作为 root 进行新鉴别时出现问题

如果在您试图在您的系统上变为超级用户时鉴别失败,而您业已将 root 授权对象添加到您的主机的密钥表,则有两个可能的问题需要检查。首先,请确保密钥表中的 root 授权对象与其实例一样,拥有一个完全合格的名称。如果确实如此,则请检查 /etc/resolv.conf 文件,以确保系统已正确地设置为一个 DNS 客户机。