我正在尝试按照以下步骤将 Ubuntu 16.04 服务器加入 Windows 2003 R2 域Ubuntu SSSD 和 Active Directory 指南。我的管理员说从控制器方面来看,它是域的一部分。但 SSSD 似乎无法启动并net ads join
失败。
安装程序krb5.conf
已对其进行了修改,现在内容如下:
kyle@Server21:~$ cat /etc/krb5.conf
[libdefaults]
default_realm = COMAPNYNAME.LOCAL
在之前的安装中,我以为[realms]
安装过程中还要求输入其他内容,但我不记得是什么了,而且这次也没有要求输入。
我的smb.conf
:
[global]
## Browsing/Identification ###
# Change this to the workgroup/NT-domain name your Samba server will part of
workgroup = COMPANYNAME
client signing = yes
client use spnego = yes
kerberos method = secrets and keytab
realm = COMPANYNAME.LOCAL
security = ads
我的sssd.conf
:
kyle@Server21:~$ sudo cat /etc/sssd/sssd.conf
[sssd]
services = nss, pam
config_file_version = 2
domains = COMPANYNAME.LOCAL
[domain/COMPANYNAME.LOCAL]
id_provider = ad
access_provider = ad
override_homedir = /home/%d/%u
虽然 SSSD 服务似乎无法启动:
kyle@Server21:~$ systemctl status sssd.service
● sssd.service - System Security Services Daemon
Loaded: loaded (/lib/systemd/system/sssd.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2016-06-22 09:57:57 EDT; 37min ago
Process: 16027 ExecStart=/usr/sbin/sssd -D -f (code=exited, status=1/FAILURE)
Jun 22 09:57:55 Server21 sssd[16038]: Starting up
Jun 22 09:57:55 Server21 sssd[16041]: Starting up
Jun 22 09:57:55 Server21 sssd[16042]: Starting up
Jun 22 09:57:56 Server21 sssd[be[16043]: Starting up
Jun 22 09:57:57 Server21 sssd[be[16043]: Failed to read keytab [default]: No such file or directory
Jun 22 09:57:57 Server21 sssd[16031]: Exiting the SSSD. Could not restart critical service [COMPANYNAME.LOCAL].
Jun 22 09:57:57 Server21 systemd[1]: sssd.service: Control process exited, code=exited status=1
Jun 22 09:57:57 Server21 systemd[1]: Failed to start System Security Services Daemon.
Jun 22 09:57:57 Server21 systemd[1]: sssd.service: Unit entered failed state.
Jun 22 09:57:57 Server21 systemd[1]: sssd.service: Failed with result 'exit-code'.
由于指南指出所有权和权限很重要:
kyle@Server21:~$ sudo ls -la /etc/sssd
total 12
drwx--x--x 2 sssd sssd 4096 Jun 21 14:34 .
drwxr-xr-x 103 root root 4096 Jun 22 10:21 ..
-rw------- 1 root root 172 Jun 21 14:22 sssd.conf
我的nsswitch.conf
:
kyle@Server21:~$ cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat sss
group: compat sss
shadow: compat sss
gshadow: files
hosts: files dns
networks: files
protocols: db files
services: db files sss
ethers: db files
rpc: db files
netgroup: nis sss
sudoers: files sss
我的hosts
:
kyle@Server21:~$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 Server21.COMPANYNAME.LOCAL Server21
192.168.11.11 Server21.COMPANYNAME.LOCAL Server21
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
问题就出在这里。使用sudo
运行kinit
结果如下:
kyle@Server21:~$ sudo kinit adminstrator
kinit: Client '[email protected]' not found in Kerberos database while getting initial credentials
如果我放弃它,它将进行身份验证sudo
:
kyle@Server21:~$ kinit -V administrator
Using default cache: /tmp/krb5cc_1000
Using principal: [email protected]
Password for [email protected]:
Authenticated to Kerberos v5
我可以验证这张票:
kyle@Server21:~$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: [email protected]
Valid starting Expires Service principal
06/23/2016 13:41:55 06/23/2016 23:41:55 krbtgt/[email protected]
renew until 06/24/2016 13:41:48
但是当我尝试加入域时:
kyle@Server21:~$ sudo net ads join -k
Failed to join domain: failed to lookup DC info for domain 'COMPANYNAME.LOCAL' over rpc: An internal error occurred.
我之前收到过NT_STATUS_UNSUCCESSFUL
指南中提到的消息,但可以通过修改我的hosts
文件来解决这个问题。
该指南谈到了验证计算机帐户是否在 Active Directory 中创建。我的管理员说他可以正常查看机器,所以我相信没问题。第二个验证选项没有告诉我应该从该命令中得到什么,但我没有收到任何信息,所以我想它不起作用。
那么我哪里做错了?
编辑:
我不确定我做了什么,但 SSSD 现在正在运行。
答案1
问题似乎是我的管理员在域控制器上为该服务器创建了一个条目。这显然引起了冲突,导致 Kerberos 在尝试加入时遇到以下错误:
kyle@Server21:~$ sudo net ads join -k
Failed to join domain: failed to lookup DC info for domain 'COMPANYNAME.LOCAL' over rpc: An internal error occurred.
我不确定这个错误是否完全准确,因为我的管理员说服务器已加入到他的域中,并realmd
指出我也已加入:
kyle@Server21:~$ realm join COMPANYNAME.LOCAL
realm: Already joined to this domain
我成功加入 Kerberos 所遵循的步骤如下:
- 管理员删除了域控制器中的条目
- 使用以下方法重新运行 Kerberos 配置:
sudo dpkg-reconfigure krb5-config
- 选择配置中的选项,将域控制器明确添加
[realms]
到krb5.conf
- 更改主机名以确保创建新记录
- 使用以下方式获取新票据
kinit
- 使用以下方式加入域
sudo net ads join -k
最后结果:
kyle@SERV21:~$ sudo net ads join -k
Using short domain name -- COMPANYNAME
Joined 'SERV21' to dns domain 'CompanyName.Local'
答案2
我认为您缺少密钥表。您可以通过 kadmin 工具创建它。输入管理员并在提示符下输入帮助了解如何添加 keytab。