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

如何在RHEL 8环境下通过NTLM认证连接AD域RDS实例查询数据

解决RHEL8上pyodbc通过NTLM认证连接AD域RDS的问题

一、修正连接字符串格式

NTLM认证的连接字符串必须包含明确的域用户格式、认证方式,以及适配RDS的加密参数,示例如下:

import pyodbc

conn_str = (
    "DRIVER={ODBC Driver 18 for SQL Server};"
    "SERVER=your-rds-endpoint,1433;"
    "DATABASE=your-target-db;"
    "UID=YOUR-AD-DOMAIN\\domain-username;"
    "PWD=your-domain-password;"
    "Authentication=NTLM;"
    "Encrypt=yes;"
    "TrustServerCertificate=no;"
)
try:
    conn = pyodbc.connect(conn_str)
    print("连接成功")
    conn.close()
except pyodbc.Error as e:
    print(f"连接失败: {e}")

注意事项:

  • 驱动名称必须和系统已安装的完全匹配,可用odbcinst -q -d命令查看已安装的ODBC驱动列表
  • UID必须采用域\用户名的格式,不能只填用户名
  • Encrypt=yes是RDS的强制要求,TrustServerCertificate生产环境建议设为no,需确保系统信任AWS的SSL证书

二、配置RHEL8的NTLM依赖组件

Linux上的msodbcsql驱动依赖Kerberos组件处理NTLM认证,需完成以下配置:

  1. 安装必要系统包:
sudo dnf install krb5-workstation krb5-libs -y
  1. 修改/etc/krb5.conf配置文件,填入你的AD域信息:
[libdefaults]
    default_realm = YOUR-AD-DOMAIN.COM  # 大写域名
    dns_lookup_kdc = true
    dns_lookup_realm = true

[realms]
    YOUR-AD-DOMAIN.COM = {
        kdc = ad-domain-controller.your-ad-domain.com  # 域控制器地址
        admin_server = ad-domain-controller.your-ad-domain.com
    }

[domain_realm]
    .your-ad-domain.com = YOUR-AD-DOMAIN.COM
    your-ad-domain.com = YOUR-AD-DOMAIN.COM

配置完成后,可通过kinit domain-username@YOUR-AD-DOMAIN.COM测试域用户认证是否正常。

三、验证驱动与pyodbc兼容性

  • 检查ODBC驱动是否正常安装:
odbcinst -q -d

确保输出中存在你在连接字符串中指定的驱动(如ODBC Driver 18 for SQL Server)

  • 升级pyodbc到最新版本,避免版本兼容问题:
pip install --upgrade pyodbc

四、常见问题排查

  1. NTLM认证失败:
    • 确认域用户拥有RDS实例的访问权限,以及目标数据库的查询权限
    • 测试RHEL8实例能否解析AD域控制器地址:nslookup ad-domain-controller.your-ad-domain.com
    • 检查RDS安全组是否允许RHEL8实例的IP访问1433端口
  2. 驱动加载失败:
    • 确保连接字符串中的驱动名称与odbcinst -q -d输出完全一致(注意大小写和空格)
    • 检查驱动文件权限,例如/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.3.so.2.1需保证Python进程可读
  3. SSL证书错误:
    • 临时测试可将TrustServerCertificate设为yes,但生产环境建议安装AWS根证书:下载证书后放入/etc/pki/ca-trust/source/anchors/,执行update-ca-trust extract更新系统信任库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:57:37