我正在尝试设置一个使用 Samba 4 作为 Active Directory 域控制器的 Ubuntu 服务器,但当我尝试从 Windows 机器连接时出现错误。
这是 Samba 的错误日志(为了保护隐私,我替换了我的域名):
[2014/07/04 15:09:48.437798, 3] ../source4/auth/kerberos/krb5_init_context.c:80(smb_krb5_debug_wrapper)
Kerberos: AS-REQ [email protected] from ipv4:10.8.0.14:36394 for krbtgt/[email protected]
[2014/07/04 15:09:48.442161, 3] ../source4/auth/kerberos/krb5_init_context.c:80(smb_krb5_debug_wrapper)
Kerberos: Client sent patypes: 128
[2014/07/04 15:09:48.442329, 3] ../source4/auth/kerberos/krb5_init_context.c:80(smb_krb5_debug_wrapper)
Kerberos: Looking for PK-INIT(ietf) pa-data -- [email protected]
[2014/07/04 15:09:48.442438, 3] ../source4/auth/kerberos/krb5_init_context.c:80(smb_krb5_debug_wrapper)
Kerberos: Looking for PK-INIT(win2k) pa-data -- [email protected]
[2014/07/04 15:09:48.442539, 3] ../source4/auth/kerberos/krb5_init_context.c:80(smb_krb5_debug_wrapper)
Kerberos: Looking for ENC-TS pa-data -- [email protected]
[2014/07/04 15:09:48.442658, 3] ../source4/auth/kerberos/krb5_init_context.c:80(smb_krb5_debug_wrapper)
Kerberos: Need to use PA-ENC-TIMESTAMP/PA-PK-AS-REQ
[2014/07/04 15:09:48.535053, 3] ../source4/smbd/service_stream.c:66(stream_terminate_connection)
Terminating connection - 'kdc_tcp_call_loop: tstream_read_pdu_blob_recv() - NT_STATUS_CONNECTION_DISCONNECTED'
[2014/07/04 15:09:48.535219, 3] ../source4/smbd/process_single.c:114(single_terminate)
single_terminate: reason[kdc_tcp_call_loop: tstream_read_pdu_blob_recv() - NT_STATUS_CONNECTION_DISCONNECTED]
但是,如果我尝试本地登录,则没有问题:
# smbclient //localhost/netlogon -U Administrator
Enter Administrator's password:
Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 4.1.6-Ubuntu]
smb: \> ls
. D 0 Mon May 26 12:54:45 2014
.. D 0 Mon May 26 12:56:28 2014
36484 blocks of size 8388608. 27650 blocks available
smb: \>
# kinit
Password for [email protected]:
Warning: Your password will expire in 5 days on jue 10 jul 2014 14:47:07 ART
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: [email protected]
Valid starting Expires Service principal
04/07/14 16:38:31 05/07/14 02:38:31 krbtgt/[email protected]
renew until 05/07/14 16:38:24
可能存在什么问题?“需要使用 PA-ENC-TIMESTAMP/PA-PK-AS-REQ”错误是什么意思?
以下是一些可能重要的附加信息。
- 我按照本指南安装了 Samba 4:https://wiki.samba.org/index.php/Samba_AD_DC_HOWTO
- 我跟着其他指南尝试配置 Windows 客户端,并考虑客户端和服务器之间的日期/时间同步。
有关服务器的信息:
- 操作系统:Ubuntu Server 14.04
- Samba 版本:4.1.6-Ubuntu
- Kerberos 版本:Kerberos 5 版本 1.12
smb.conf 的内容
# Global parameters
[global]
workgroup = MYDOMAIN
realm = MYDOMAIN.COM
netbios name = COLLIE
server role = active directory domain controller
dns forwarder = 10.1.1.1
idmap_ldb:use rfc2307 = yes
log level = 3
[netlogon]
path = /var/lib/samba/sysvol/huntmob.com/scripts
read only = No
[sysvol]
path = /var/lib/samba/sysvol
read only = No
# Sharing general
[files]
path = /var/lib/samba/usershares/files
read only = no
[todos]
path = /var/lib/samba/usershares/todos
read only = no
[dbox]
path = /var/lib/samba/usershares/dbox
read only = no
有关 Windows 客户端的信息
在此安装阶段,我正在使用运行 Windows 7 Professional 的虚拟机,该虚拟机由 Kubuntu 盒托管,该盒通过 VPN 连接到 Samba 服务器所在的办公室。
我知道这有点混乱,但这只是目前的情况,Samba 服务器将只为本地 Windows 机器提供服务。但是,我不认为这是导致问题的原因,因为 Windows 机器似乎可以正常访问 Samba 服务器。
答案1
当客户端执行基于密码的初始身份验证时,它们必须在构建初始 AS 请求时提供 PA-ENC-TIMESTAMP 预身份验证类型。
您的 Windows 客户端显然没有执行此操作。
我不太了解 Windows 方面,但也许存在用于身份验证的“兼容模式”选项,而 Samba 4 无需启用该选项即可运行。