You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Kafka Connect连接SQL Server Windows认证报错求助

解决Docker中Kafka Connect jTDS Windows认证的Kerberos Realm错误

针对你遇到的GSS Failed: Invalid name provided (Mechanism level: KrbException: Cannot locate default realm)错误,核心问题是Docker容器缺少Kerberos域环境的配置,以下是具体解决步骤:

1. 配置Kerberos客户端文件

Docker容器默认没有Kerberos配置,需要手动创建krb5.conf文件来指定域信息:

[libdefaults]
    default_realm = YOUR_DOMAIN.COM  # 替换成你的AD域,必须大写
    dns_lookup_kdc = true
    dns_lookup_realm = true
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = true

[realms]
    YOUR_DOMAIN.COM = {
        kdc = dc.your-domain.com      # 替换成域控制器的主机名/IP
        admin_server = dc.your-domain.com
    }

[domain_realm]
    .your-domain.com = YOUR_DOMAIN.COM
    your-domain.com = YOUR_DOMAIN.COM

将这个文件挂载到Docker容器的默认Kerberos配置路径,比如在docker-compose.yml中添加:

volumes:
  - ./krb5.conf:/etc/krb5.conf

2. 修正jTDS连接URL

在Kafka Connect的JDBC配置里,明确指定域和认证方式,避免依赖自动检测:

connection.url=jdbc:jtds:sqlserver://your-sql-server:1433/your-db-name;domain=YOUR_DOMAIN;useNTLMv2=true;authentication=NTLM

注意domain值要和krb5.conf里的default_realm保持一致(大写)。

3. 确保容器网络与域连通

  • 检查Docker容器能否ping通域控制器的IP/主机名
  • 验证域控制器的KDC端口(默认88/UDP、TCP)是否能访问,可在容器内用telnet dc.your-domain.com 88测试
  • 如果容器处于自定义Docker网络,确保该网络能路由到域网络;必要时可使用network_mode: host(仅限测试或允许的场景)

4. 同步容器时间与域控制器

Kerberos对时间差敏感(默认允许5分钟以内),需确保容器时间和域控制器一致:

  • 挂载主机的时间文件:- /etc/localtime:/etc/localtime:ro
  • 或者在容器内配置NTP服务同步域控制器时间

5. 验证Kerberos票据获取(可选)

进入Docker容器,执行以下命令测试Kerberos配置是否生效:

kinit your-domain-user@YOUR_DOMAIN.COM

输入用户密码后,用klist查看是否成功获取TGT票据,若成功则说明Kerberos配置正常。

内容的提问来源于stack exchange,提问作者user284331

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 13:52:40