---
schema_version: "1"
id: 2f642b2c95827fd51ef356ca6c4a0ea90565e2bb20bab8f28a6249c9c52dd242
title: Kerberos 疑难解答
collection: tableau
version: next
locale: zh-cn
portal_url: https://docs.salesforce.com/tableau/next/zh-cn/server-linux/kerberos_trouble.md
canonical_url: https://help.tableau.com/v0.0/server-linux/zh-cn/kerberos_trouble.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 11fa1ab0247819e6cef5d5cf491913907ac5cfe37a34992bbab20cf684a0b82d
description: Troubleshoot Kerberos single sign-on and delegated data source issues.
---
[跳转到主要内容](#main-content)

# Kerberos 疑难解答

本主题中的故障排除建议分为与服务器上的单一登录 (SSO) 相关的问题以及委派数据源的问题。

另请参见 Tableau 社区 wiki 页面：[Testing Database Kerberos Configuration On Linux（在 Linux 上测试数据库 Kerberos 配置）](https://community.tableau.com/s/news/a0A4T000002O4RnUAK/testing-database-kerberos-configuration-on-linux)。

## Tableau Server 单点登录

在 Kerberos SSO 环境中，通过 Web 浏览器或 Tableau Desktop 登录到 Tableau Server 的用户可能会看到一条消息，指明 Tableau Server 无法（使用单点登录）自动将这些用户登录。该消息建议用户改为提供 Tableau Server 用户名和密码。

![](/tableau/next/zh-cn/server-linux/zh-cn/Img/kerb_auth_failed.png)

### 在客户端计算机上排查登录错误

- **输入用户名和密码** — 若要检查用户对 Tableau Server 的一般访问权限，请通过输入用户的名称和密码进行登录。
    
    如果这些凭据失败，则该用户可能不是 Tableau Server 上的用户。为了使 Kerberos SSO 起作用，用户必须能够访问 Tableau Server，并且必须获得 Active Directory 授予的票证授予票证 (TGT)，如此列表后面的“**TGT**”项中所述。
- **检查其他用户的 SSO 凭据** — 尝试使用其他用户帐户通过 SSO 连接到 Tableau Server。如果所有用户均受影响，则问题可能在 Kerberos 配置中。
- **使用不是服务器计算机的计算机** — 如果在 localhost 上登录 Tableau Server，Kerberos SSO 将不起作用。客户端必须从 Tableau Server 计算机以外的计算机进行连接。
- **使用服务器名称而不是 IP 地址** — 如果输入 IP 地址作为 Tableau Server 名称，Kerberos SSO 将不起作用。此外，用于访问 Tableau Server 的服务器名称必须与 Kerberos 配置中使用的名称匹配（请参见下面的**[密钥表条目](#keytable)**）。
- **确认客户端有 TGT** — 客户端计算机必须有来自 Active Directory 域的 TGT（票证授予票证）。不支持代理授予票证的约束委派。
    
    若要确认客户端计算机具有 TGT，请执行以下操作：
    
    - 在 Windows 上，打开命令提示符并键入以下命令：`klist tgt`
    - 在 Mac 上，打开终端窗口并键入以下命令：`klist`
    
    输出应显示正尝试接受 Tableau Server 身份验证的用户/域的 TGT。
    
    在以下情况下，客户端计算机可能没有 TGT：
    
    - 客户端计算机使用 VPN 连接。
    - 客户端计算机没有加入域（例如，它是在工作时使用的非工作用计算机）。
    - 用户使用本地（非域）帐户登录到计算机。
    - 计算机是没有将 Active Directory 用作网络帐户服务器的 Mac 计算机。
- **确认浏览器版本和设置** — 对于 Web 浏览器登录，请确保浏览器对于 Kerberos 受支持并在必要的情况下已正确配置。
    
    - Internet Explorer (IE) 和 Chrome 立即可在 Windows 上运行。
    - Safari 立即可在 Mac 上运行。
    - Firefox 需要额外的配置。
    
    有关详细信息，请参见[Kerberos SSO 的 Tableau 客户端支持](https://help.tableau.com/v0.0/server-linux/zh-cn/kerberos_browser.htm)。

### 在服务器上排查登录错误

如果无法通过客户端计算机解决问题，则下面的步骤是在运行 Tableau Server 的计算机上排除故障。管理员可以使用请求 ID 在 Tableau Server 上的 Apache 日志中查找登录尝试。

- **日志文件** — 查看 Apache error.log 中的错误（含有失败登录尝试的确切日期/时间）。
- **键表条目** — 如果 error.log 条目包含“No key table entry matching HTTP/<servername>.<domain>.<org>@”（没有与 HTTP/<服务器名称>.<域>.<org> 匹配的键表条目）消息，例如：
    
    `[Fri Oct 24 10:58:46.087683 2014] [:error] [pid 2104:tid 4776] [client 10.10.1.62:56789] gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, No key table entry found matching HTTP/servername.domain.com@)`
    
    此错误是由以下任意项的不匹配造成的：
    
    - **Tableau Server URL** - 客户端计算机用于访问服务器的 URL。
        
        这是您键入 Tableau Desktop 或浏览器地址栏的名称。它可以是短名称 (`http://servername`)，也可以是完全限定域名 (`http://servername.domain.com`)
        
        ![Internet 浏览器地址栏中显示的 Tableau 服务器名称示例。](/tableau/next/zh-cn/server-linux/zh-cn/Img/kerb_servername_1.png) ![Tableau Server 登录对话框中显示的 Tableau 服务器名称示例。](/tableau/next/zh-cn/server-linux/zh-cn/Img/kerb_servername_2.png)
    - 服务器 IP 地址的 **DNS 反向查找。**
        
        它使用 IP 地址查找 DNS 名称。
        
        在命令提示符处，键入：
        
        `ping servername`
        
        利用在 ping 服务器之后返回的 IP 地址执行 DNS 反向查找，键入：
        
        `nslookup <ip address>`
        
        nslookup 命令将返回该 IP 地址的网络信息。在响应的 _Non-authoritative answer_ 部分中，验证完全限定的域名 (FQDN) 是否与以下配置的值匹配： 
        
        - Kerberos .keytab 文件。
        - 服务器的服务主体名称 (SPN)
        
        有关配置这些值的详细信息，请参见[了解密钥表要求](https://help.tableau.com/v0.0/server-linux/zh-cn/kerberos_keytab.htm)。

### 验证 Kerberos 配置脚本

您可能需要修改用于生成环境变量密钥表文件的 ktpass 命令。查看知识库文章[无法为 Tableau Server 生成 Kerberos 脚本配置](https://kb.tableau.com/articles/issue/unable-to-generate-kerberos-script-configuration-for-tableau-server?lang=zh-cn)中的疑难解答步骤。

## 数据源 SSO

### 委派的数据源访问失败

检查 vizqlserver 日志文件中是否有“workgroup-auth-mode”：

在日志文件中查找“workgroup-auth-mode”。它应显示“kerberos-impersonate”而不是“as-is”。

### Kerberos 委派多域配置

Tableau Server 能够从其他 Active Directory 域中委派用户。如果您的数据库使用 MIT Kerberos，您需要将 Kerberos 主体调整为数据库用户映射。具体而言，您将需要使用用户将从中连接的每个 Kerberos 域的规则更新 krb5.conf。使用 `[realms]` 部分中的 `auth_to_local` 标记将主体名称映射到本地用户名。

例如，假设一个用户为 `EXAMPLE\jsmith`，其 Kerberos 主体为 `jsmith@EXAMPLE.LAN`。在这种情况下，Tableau Server 将指定委派用户 `jsmith@EXAMPLE`。Tableau Server 将使用 Active Directory 旧域别名作为 Kerberos 域。

目标数据库可能已经有诸如以下规则，用于将用户 `jsmith@EXAMPLE.LAN` 映射到数据库用户 `jsmith`。

`EXAMPLE.LAN = {      RULE:[1:$1@$0](https://help.tableau.com/v0.0/server-linux/zh-cn/.*@EXAMPLE.LAN)s/@.*//      DEFAULT   }`

为了支持委派，您必须添加另一条规则，将 jsmith@EXAMPLE 映射到数据库用户：

`EXAMPLE.LAN = {      RULE:[1:$1@$0](https://help.tableau.com/v0.0/server-linux/zh-cn/.*@EXAMPLE.LAN)s/@.*//      RULE:[1:$1@$0](https://help.tableau.com/v0.0/server-linux/zh-cn/.*@EXAMPLE)s/@.*//      DEFAULT   }`

有关详细信息，请参见 MIT Kerberos 文档主题 [krb5.conf](https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html)。

### 跨域约束委派

在 KDC 运行于 Windows 2012 之前的 Windows Server 上的某些跨域方案中，委派可能会失败。您可能会看到以下错误：

- SQL Server Network Interfaces：The system cannot contact a domain controller to service the authentication request.Please try again later.（系统无法联系域控制器来为身份验证请求提供服务。请稍后再试。）
- SQL Server Native Client: Cannot generate SSPI context.（SQL Server Native Client：无法生成 SSPI 上下文。）
- 域控制器将返回：`KRB-ERR-POLICY error with a status STATUS_CROSSREALM_DELEGATION_FAILURE (0xc000040b)`。

“跨域”是指 Tableau Server 使用不同服务帐户运行在与数据源不同的域中的情形。例如：

- Tableau Server 使用 DomainA 服务帐户运行在 DomainA 上。
- SQL Server 使用 DomainB 服务帐户运行在 DomainB 上。

只有当两个服务器位于同一域中时，传统约束委派才能工作。用户可能来自其他域。

如果您看到上述错误，则您的 Active Directory 管理员应移除在委派帐户上配置的任何传统约束委派以启用此方案。可以使用 Active Directory 管理工具或通过移除与 Active Directory 属性 `msDS-AllowedToDelegateTo.` 关联的值来移除委派。

如果想要随跨域委派一起保留现有单域委派，您必须使用基于资源的约束委派对两者进行配置。

有关 Kerberos 和约束委派的详细信息，请参见 Microsoft 主题 [Kerberos 约束委派概述](https://docs.microsoft.com/zh-cn/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/jj553400\(v=ws.11\))。

### Web 制作

有两种不支持 Kerberos 委派的 Web 制作场景：“在 Web 上连接到数据”和“在 Web 上创建数据源”功能尚不支持委派。具体而言，如果通过 Web 制作创建使用 Kerberos 的数据源，则数据源将使用“运行身份服务帐户”身份验证。如果要使用 Kerberos 委派创建数据源，则必须使用 Tableau Desktop 进行发布。有关运行身份服务帐户的详细信息，请参见[启用 Kerberos 服务帐户访问](https://help.tableau.com/v0.0/server-linux/zh-cn/kerberos_runas_linux.htm)。