本章为您可能会收到的错误消息提供解析,并为使用 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 命令、 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 命令,确保资格高速缓存尚未被去除且设备上留有空间。
解密完整性检查失败 |
您可能拥有一个无效票券。
请确保您的资格是有效的。借助 kdestroy 销毁您的票券,并借助 kinit 创建新的票券。
请确保目标主机拥有一个带有正确版本的服务密钥的密钥表。。使用 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.conf 和 kdc.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 命令、 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, eklogin 或 klogin 用于 rlogin)。该可能是由于资格无效。
请确保您的资格有效。借助 kdestroy 销毁您的票券,并借助 kinit 创建新的票券。
请确保目标主机拥有一个带有正确版本的服务密钥的密钥表。使用 kadmin(1M) 来查看 Kerberos 数据库中的服务授权对象的密钥版本号 (例如, host/FQDN_hostname),并在目标主机来上使用 klist -k,以确保其拥有同一密钥版本号。
请确保在目标主机上的 /etc/inetd.conf 中有针对服务 (klogin, eklogin,和 kshell) 的条目。
无法安全地鉴别用户 ... 退出 |
无法与服务器协商完成鉴别。
通过调用 telnet 命令 toggle authdebug 启动鉴别调试,并查看调试消息,以获取进一步的线索。另外,请确保您拥有有效的资格。
请求中错误的授权对象 |
票券中有一个无效授权对象名称。这可能是一个 DNS 或 FQDN 问题。
请确保服务的授权对象与票券中的授权对象匹配。
您正在使用一个不带校验和支持的旧的 Kerberos5 客户机; 只有较新的客户机得到鉴别。 |
未能借助校验和与客户机协商完成鉴别。客户机可能正在使用一个不支持初始连接支持的旧的 Kerberos V5 协议。
请确保客户机正在使用一个支持初始连接支持的 Kerberos V5 协议。
本节提供用于 SEAM 软件的故障排除信息。
如果 krb5.conf 文件并未经正常格式化,则 telnet 命令将失败。然而, dtlogin 和 login 命令依旧可以成功,即使 krb5.conf 文件被指定为命令所必需的。如果发生此情形,则下列错误消息显示出来:
初始化 krb5 错误: 不当的 Kerberos 配置格式 |
如果 krb5.conf 文件的格式有一个问题,您就容易受到安全缺口的影响。您应当修正问题,然后再允许使用 SEAM 特性。
如果传播 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 文件系统失败,就请确保 /var/tmp/rc_nfs 文件存在于 NFS 服务器上。如果其并非为 root 所拥有,就请将其去除并再次尝试装配。
如果您访问一个 Kerberized NFS 文件系统时有问题,则请确保您的系统和 NFS 服务器上的 inetd.conf 文件中有一个 gssd 条目。
如果您在尝试访问一个 Kerberized NFS 文件系统时看到 无效参数 或 不良目录 错误消息,则问题可能是您在尝试装配 NFS 文件系统时,没有使用一个完全合格的 DNS 名称。正在装配的主机与服务器的密钥表中服务授权对象的主机名部分不一样。
如果您的服务器拥有多重以太网接口而您将 DNS 设置为使用 "一个接口一个名称" 的方案,而不是 "一个主机多重地址记录" 的方案,则有可能发生此类情形。对于 SEAM, 您应当依照下列方法,为每个主机设置多重地址记录 [Ken Hornstein, "Kerberos FAQ," [http://www.nrl.navy.mil/CCS/people/kenh/kerberos-faq.html], 访问于 1998 年 12 月 11 日。] :
my.host.name. A 1.2.3.4 A 1.2.4.4 A 1.2.5.4 my-en0.host.name. A 1.2.3.4 my-en1.host.name. A 1.2.4.4 my-en2.host.name. A 1.2.5.4 4.3.2.1 PTR my.host.name. 4.4.2.1 PTR my.host.name. 4.5.2.1 PTR my.host.name.
在本示例中,设置允许对不同的接口引用一次,并允许服务器的密钥表中有单独一个服务授权对象,而不是三个服务授权对象。
如果在您试图在您的系统上变为超级用户时鉴别失败,而您业已将 root 授权对象添加到您的主机的密钥表,则有两个可能的问题需要检查。首先,请确保密钥表中的 root 授权对象与其实例一样,拥有一个完全合格的名称。如果确实如此,则请检查 /etc/resolv.conf 文件,以确保系统已正确地设置为一个 DNS 客户机。