尝试使用 Windows 10 客户端连接到 Linux 主机上的 Samba 共享,即使在设置客户端安全策略以允许非 NTLMv2 身份验证,当使用有效的帐户凭据时,客户端仍然会给出“指定的密码不正确。”之类的错误。
听起来大多数系统都可以支持 NTLMv2 身份验证,所以我只想在我的 Samba 主机上启用它,而不必再担心支持旧协议。听起来 Samba 默认具有 NTLMv2 选项,但是,我需要设置哪些参数才能满足 Windows(即仅使用 NTLMv2)?
答案1
据说,Samba 的默认值与以下值匹配,但我必须明确设置它们:
lanman auth = no
ntlm auth = yes
client lanman auth = no
答案2
检查 Windows 注册表中的项:
HKLM\System\CurrentControlSet\Control\Lsa\LmCompatibilityLevel
如果将其设置为 0,则 Windows 将尝试仅使用 NTLMv1 进行连接。我曾在多台 Windows 10 机器上看到过此注册表项的设置,但我不知道为什么。但是,您可以删除此注册表项,Windows 将恢复其默认行为,即使用 NTLMv2 并顺利连接到 Samba 4。
答案3
我需要添加--allow-mschapv2
到文件中/etc/freeradius/3.0/mods-enabled/mschap
,以使其看起来像这样:
ntlm_auth = "/usr/bin/ntlm_auth --allow-mschapv2 --request-nt-key --username=%{%{Stripped-User-Name}:-%{%{User-Name}:-None}} --challenge=%{%{mschap:Challenge}:-00} --nt-response=%{%{mschap:NT-Response}:-00}"
(也就是说,除了设置正确的ntlm auth
参数。在我的情况下,它ntlm auth = mschapv2-and-ntlmv2-only
是smb.conf
)