无法使用 AD 用户帐户连接到 Ubuntu 上的 mssql 服务器

无法使用 AD 用户帐户连接到 Ubuntu 上的 mssql 服务器

我在 Ubuntu 20.04.6 LTS 上安装了 mssql-server (15.0.4335.1-6),如下Microsoft 文档

Mssql-server 已启动并运行,我可以使用 sa 帐户连接。

我想要做的是使用 Active Directory 用户帐户连接到我的 mssql 服务器。因此,为了做到这一点,我使用 sssd 和 realmd 工具将我的 ubuntu 服务器计算机加入到我的测试环境域 (pvedc.local)。这是领域列表命令:

pvedc.local
类型:kerberos
领域名称:PVEDC.LOCAL
域名:pvedc.local
配置:kerberos-member
服务器软件:active-directory
客户端软件:sssd
必需包:sssd-tools
必需包:sssd 必需包
:libnss-sss
必需包:libpam-sss
必需包:adcli
必需包:samba-common-bin
登录格式:%[电子邮件保护]
登录策略:允许领域登录

以下是我的/etc/sssd/sssd.conf配置:

[sssd]
域 = pvedc.local
config_file_version = 2
服务 = nss,pam
[domain/pvedc.local]
default_shell = /bin/bash
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = PVEDC.LOCAL
realmd_tags = 管理系统加入 adcli
id_provider = ad
fallback_homedir = /home/%u@%d
ad_domain = pvedc.local
use_fully_qualified_names = True
ldap_id_mapping = True
access_provider = ad

现在我可以使用登录工具或通过 ssh 使用域用户帐户登录到我的 ubuntu 计算机。接下来,我创建了一个域用户帐户,以便我可以使用它连接到我的 mssql 服务器。因此,在创建用户帐户后,我为该帐户创建了 SPN,并创建了适当的 keytab 文件,同样,按照微软文档。我更改了 keytab 文件的所有权和权限。

-r-------- 1 mssql mssql 192 11月22日 10:43 mssql.keytab

接下来我使用命令配置了用于此 keytab 的帐户 sudo mssql-conf 设置 network.privilegedadaccount

接下来,我使用以下命令配置 mssql server 开始使用 keytab 文件进行 kerberos 身份验证 sudo mssql-conf 设置 network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab

到目前为止没有错误输出,所以我想一切都应该如此。

接下来我使用 sa 帐户连接到 mssql 服务器,并为我的广告帐户创建了一个新的登录名([电子邮件保护])您可以看到下面创建了LOGIN(最后一行)

从 sys.server_principals 中选择名称;
转到
名称


sa
公共
系统管理员
安全
管理员服务器管理员
设置
管理员进程管理员
磁盘管理员
dbcreator
批量管理员
##MS_SQLResourceSigningCertificate##
##MS_SQLReplicationSigningCertificate##
##MS_SQLAuthenticatorCertificate
##
##MS_PolicySigningCertificate##
##MS_SmoExtendedSigningCertificate##
##MS_PolicyEventProcessingLogin## ##MS_PolicyTsqlExecutionLogin##
##MS_AgentSigningCertificate##
BUILTIN\Administrators
NT AUTHORITY\SYSTEM
NT AUTHORITY\NETWORK SERVICE
PVEDC\mssqluser

mssqluser 可以使用 ssh 或 login 连接到我的 ubuntu 机器。因此,根据 Microsoft 文档,现在该用户可以连接到我的 mssql 服务器。但是当我尝试连接时,我收到此错误:

root@mssql2:~# sqlcmd -S localhost -U mssqluser 密码: mssql:登录错误:用户“mssqluser”登录失败。 mssql:登录错误:用户“mssqluser”登录失败。

这是 mssql 错误日志文件(/var/opt/mssql/log/errorlog)的输出:

2023-11-22 12:26:53.81 登录 用户“mssqluser”登录失败。原因:找不到与提供的名称匹配的登录名。[客户端:127.0.0.1]

我甚至尝试使用 SSMS 从远程计算机进行连接。当我使用 sa 帐户(SQL 身份验证)时,一切正常。但是当我尝试使用 mssqluser 帐户进行连接时,出现以下错误:

标题:连接到服务器

无法连接到 mssql2.pvedc.local\pve3mssql2,1433。

附加信息:登录失败。登录来自不受信任的域,无法与集成身份验证一起使用。(Microsoft SQL Server,错误:18452)如需帮助,请单击:https://docs.microsoft.com/sql/relational-databases/errors-events/mssqlserver-18452-database-engine-error

按钮:确定

以下是有关此连接尝试的 mssql 错误日志文件的输出:

2023-11-22 12:32:03.62 登录错误:17806,严重性:20,状态:14。2023-11-22 12:32:03.62 登录 SSPI 握手失败,错误代码为 0x80090304,状态为 14,同时建立具有集成安全性的连接;连接已关闭。原因:AcceptSecurityContext 失败。操作系统错误代码指示失败的原因。无法联系本地安全机构 [CLIENT:10.5.5.172] 2023-11-22 12:32:03.62 登录错误:18452,严重性:14,状态:1。2023-11-22 12:32:03.62 登录 登录失败。登录来自不受信任的域,不能与集成身份验证一起使用。 [客户端:10.5.5.172]

我不知道问题是什么。我在互联网上搜索了类似的问题和可能的解决方案,但到目前为止一无所获。有什么建议吗?

相关内容