本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊 EC2 Linux 实例域加入错误
以下内容可以帮助您解决在将 Amazon EC2 Linux 实例加入 Amazon 托管 Microsoft AD 目录时可能遇到的一些错误消息。
Linux 实例无法加入域或进行身份验证
Ubuntu 14.04、16.04 和 18.04 实例必须是可反向解析的,然后才能使用微软 DNS Active Directory。否则,您可能会遇到以下两种场景之一:
场景 1:Ubuntu 实例尚未加入领域
对于尝试加入领域的 Ubuntu 实例,则该 sudo realm
join
命令可能不会提供加入域所需的权限并可能显示以下错误:
! 无法向 Active Directory 进行身份验证:SASL(-1):一般失败:GSSAPI错误:提供的名称无效(成功)adcli:无法连接。EXAMPLE COMdomain:无法对活动目录进行身份验证:SASL(-1):一般失败:GSSAPI错误:提供的名称无效(成功)!Insufficient permissions to join the domain realm: Couldn't join realm: Insufficient permissions to join the domain
场景 2:Ubuntu 实例已加入领域
对于已经加入 Microsoft Active Directory 域的 Ubuntu 实例,尝试使用域凭据SSH进入该实例可能会失败,并出现以下错误:
$ ssh 管理员@ EXAMPLE。 COM@198 .51.100
没有这样的身份:/Users/username/.ssh/id_ed25519:没有这样的文件或目录
管理员@ EXAMPLE。 COM@198 .51.100
的密码:
权限被拒绝,请重试。
管理员@ 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]:无效的用户 admin@ 的密码失败。EXAMPLE COM从 203.0.113.0 端口 13344
ssh2
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管理员的密码@ EXAMPLE。 COM: ubuntu @ip -192-0-2-0:~$ klist 门票缓存:5cc_1000 默认主体:admin@。FILE:/tmp/krb EXAMPLE COM
解决办法
对于这两种情况,当前推荐的解决方法是在 [libdefaults] 部分DNS/etc/krb5.conf
中禁用反向操作,如下所示:
[libdefaults] default_realm = EXAMPLE.COM rdns = false
无缝域加入的单向信任身份验证问题
如果您在 Amazon 托管的 Microsoft AD 和您的本地 Active Directory 之间建立了单向传出信任,则在尝试使用带有 Winbind 的可信 Active Directory 凭据对已加入域的 Linux 实例进行身份验证时,可能会遇到身份验证问题。
错误
7 月 31 日 00:00:00 EC2AMAZ-LSMWqT sshd [23832]:来自 xxx.xxx.xxx.xxx 的 user@corp.example.com 密码失败 port 18309 ssh2
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):请求 wbcLogonUser 失败:_ _ _,PAM错误:WBC_ ERR _ AUTH ERR (4)ERROR,:**NT PAM STATUS _ _ _ _ SYSTEM _ _ _ **,错误消息NTSTATUS是:找不到对象名称。OBJECT NAME NOT FOUND
7 月 31 日 00:05:00 EC2AMAZ-LSMWqT sshd [23832]:pam_winbind (sshd: auth):内部模块错误(retval = _ _ (4),用户 = '\ user')PAMSYSTEMERRCORP
解决办法
要解决此问题,您需要使用以下步骤注释掉或删除PAM模块配置文件 (/etc/security/pam_winbind.conf
) 中的指令。
-
在文本编辑器中打开
/etc/security/pam_winbind.conf
文件。sudo vim /etc/security/pam_winbind.conf
-
注释掉或删除以下指令 krb5_auth = yes。
[global] cached_login = yes krb5_ccache_type = FILE #krb5_auth = yes
-
停止 Winbind 服务,然后重新启动它。
service winbind stop or systemctl stop winbind net cache flush service winbind start or systemctl start winbind