参考 > 安全 > 认证方式 > 企业认证机制 > Kerberos身份验证 > Kerberos身份验证疑难解答
如果您难以通过Kerberos启动mongod
或mongos
通过Kerberos进行身份验证
:
确保您正在运行MongoDB Enterprise,而不是MongoDB Community Edition。Kerberos身份验证是MongoDB Enterprise的一项功能,不适用于MongoDB Community Edition二进制文件。
要验证您使用的是MongoDB Enterprise,请将--version
命令行选项传递给mongod
或mongos
:
在此命令的输出中,查找字符串或确认您正在使用MongoDB Enterprise二进制文件。modules:
subscription
modules: enterprise
确保mongod
或mongos
实例的规范系统主机名
是可解析的标准域名。
在Linux上,可以在系统提示符下使用命令来验证系统主机名解析。hostname
-f
在Linux上,确保SPN的服务主体名称(SPN)的主要组成部分
是mongodb
。如果SPN的主要组件
不是 mongodb
,则必须使用来指定主要组件
。--setParameter saslServiceName
在Linux上,确保服务主体名称的实例部分(SPN)
在
密钥表文件中的规范系统主机名匹配mongod
或mongos
实例。如果mongod
或mongos
实例的系统主机名不在keytab文件中,则身份验证将失败,并显示一条错误消息。GSSAPI error acquiring
credentials.
如果返回的您mongod
或mongos
实例的主机名
不是完全限定的,请在启动或时用于设置实例的完全限定的域名。hostname -f
--setParameter saslHostName
mongod
mongos
确保运行mongod
或
mongos
实例的每个主机都有A
和PTR
DNS记录,以提供正向和反向DNS查找。该A
记录应映射到mongod
或mongos
的FQDN。
确保托管MongoDB实例和Kerberos基础结构的服务器上的时钟在最大时间偏差内:默认为5分钟。大于最大时间偏差的时间差会阻止成功进行身份验证。
MIT Kerberos KRB5_TRACE
为跟踪记录输出提供了环境变量。如果您在Linux上使用MIT Kerberos的持续存在的问题,您可以设置KRB5_TRACE
启动你的时候
mongod
,mongos
或mongo
情况下,产生详细的日志记录。
例如,以下命令启动一个独立的,mongod
其密钥表文件位于默认/etc/krb5.keytab
路径并设置KRB5_TRACE
为写入/logs/mongodb-kerberos.log
:
在某些情况下,如果Kerberos服务存在问题,MongoDB将从GSSAPI接口返回错误消息。一些常见的错误消息是: