Linux 域加入错误 - Amazon Directory Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Linux 域加入错误

以下内容可帮助您排查在将 EC2 Linux 实例加入领域时可能遇到的一些错误消息:Amazon托管的 Microsoft AD 目录。

Linux 实例无法加入域或进行身份验证

Ubuntu 14.04、16.04 和 18.04 实例在 DNS 中必须可以反向解析,领域才能使用 Microsoft AD。否则,您可能会遇到以下两种场景之一:

方案 1: Ubuntu 实例尚未加入领域

对于尝试加入领域的 Ubuntu 实例,则该 sudo realm join 命令可能不会提供加入域所需的权限并可能显示以下错误:

! 无法向活动目录进行身份验证:SASL (-1):通用失败:GSSAPI 错误:提供了无效的名称(成功)adcli:无法连接到 EXAMPLE.COM 域名:无法向活动目录进行身份验证:SASL (-1):通用失败:GSSAPI 错误:提供了无效的名字(成功)!没有足够的权限加入域名领域:无法加入领域:没有足够的权限加入域

方案 2: Ubuntu 实例已加入领域

对于已加入 Microsoft AD 域的 Ubuntu 实例,SSH 尝试使用域凭证进入实例可能会失败,并显示以下错误:

$ ssh admin@EXAMPLE.COM@198.51.100

没有这样的身份:/username/.ssh/ID_ed25519:没有这样的文件或目录

admin@EXAMPLE.COM@198.51.100 的密码:

权限被拒绝,请重试。

admin@EXAMPLE.COM@198.51.100 的密码:

如果您使用公钥登录到实例并检查/var/log/auth.log,您可能会看到以下有关无法找到用户的错误:

5 月 12 日 01:02:12 ip-192-0-2-0 sshd[2251]:pam_unix(sshd:auth):身份验证失败;logname= uid=0 euid=0 tty=ssh ruser= rhost=203.0.113.0

5 月 12 日 01:02:12 ip-192-0-2-0 sshd[2251]:pam_sss(sshd:auth):身份验证失败;logname= uid=0 euid=0 tty=ssh ruser= rhost=203.0.113.0 user=admin@EXAMPLE.COM

5 月 12 日 01:02:12 ip-192-0-2-0 sshd [2251]:pam_sss (sshd: auth):已收到用户 admin@EXAMPLE.COM:10(底层身份验证模块不知道的用户)

5 月 12 日 01:02:14 ip-192-0-2-0 sshd [2251]:来自 203.0.113.0 端口 13344 ssh2 的无效用户 admin@EXAMPLE.COM 的密码失败

5 月 12 日 01:02:15 ip-192-0-2-0 sshd [2251]:已通过 203.0.113.0 [preauth] 关闭连接

但是,kinit因为用户仍然有效。看这个例子:

ubuntu @ip -192-0-2-0:~$ kinit admin@EXAMPLE.COM admin@EXAMPLE.COM 的密码:ubuntu @ip -192-0-2-0:~$ klist 票证缓存:文件:/tmp/krb5cc_1000 默认主体:admin@EXAMPLE.COM

解决办法

这两种场景当前推荐的解决方法是禁用反向 DNS,/etc/krb5.conf在 [libdefault] 部分中,如下所示:

[libdefaults] default_realm = EXAMPLE.COM rdns = false

无缝域加入的单向信任身份验证问题

如果你在你之间建立了单向传出信任Amazon托管 Microsoft AD 和你的本地 AD,当尝试使用 Winbind 的受信任 AD 凭据对加入域的 Linux 实例进行身份验证时,你可能会遇到身份验证问题。

错误

7 月 31 日 00:00:00 ec2amaz-lsmwqt sshd [23832]:来自 xxx.xxx.xxx.xxx 端口 18309 ssh2 的 user@corp.example.com 密码失败

7 月 31 日 00:05:00 ec2amaz-lsmwqt sshd [23832]:pam_winbind (sshd: auth):获取密码 (0x00000390)

7 月 31 日 00:05:00 ec2amaz-lsmwqt sshd [23832]:pam_winbind (sshd: auth):pam_get_item 返回了密码

7 月 31 日 00:05:00 ec2amaz-lsmwqt sshd [23832]:pam_winbind (sshd: auth):请求 WBcLOGONUN 用户失败:WBC_ERR_AUTH_ERROR,PAM 错误:PAM_SYSTEM_ERR (4),NTSTATUS: **NT_STATUS _OBJECT_NAME_NOT_NOT_FOUND**,错误消息是:找不到对象名称。

7 月 31 日 00:05:00 ec2amaz-lsmWQT sshd [23832]:pam_winbind (sshd: auth):内部模块错误(retval = PAM_SYSTEM_ERR (4),用户 = '公司\ 用户')

解决办法

要解决此问题,您需要注释掉或从 PAM 模块配置文件中删除指令(/etc/security/pam_winbind.conf) 使用以下步骤。

  1. 在文本编辑器中打开 /etc/security/pam_winbind.conf 文件。

    sudo vim /etc/security/pam_winbind.conf
  2. 注释掉或删除以下指令krb5_auth = 是.

    [global] cached_login = yes krb5_ccache_type = FILE #krb5_auth = yes
  3. 停止 Winbind 服务,然后重新启动它。

    service winbind stop or systemctl stop winbind net cache flush service winbind start or systemctl start winbind