根本原因是windows 10强制ntlmv2认证而samba未启用对应支持,需同步配置:windows端设“网络安全:lan管理器身份验证级别”为仅发送ntlmv2响应(值5)并启用“不允许存储lan manager哈希值”,linux端smb.conf中启用ntlm auth = yes、禁用lanman auth = no,并设map to guest = never,最后执行gpupdate /force及重启samba服务。

Windows 10在局域网内无法连接Linux搭建的Samba共享,常见表现为输入正确账号密码后仍提示“拒绝访问”或“登录失败”,根本原因往往是客户端强制NTLMv2而服务端未启用对应认证支持,或本地策略与Samba配置未协同生效。
确认并修改Windows客户端组策略
第一步:按 Win + R 输入 gpedit.msc 回车,打开本地组策略编辑器。
第二步:导航至 计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 安全选项。
第三步:找到并双击 网络安全:LAN 管理器身份验证级别,将其设为:仅发送 NTLMv2 响应。拒绝 LM 和 NTLM(此项值为5,是强制NTLMv2协商的硬性前提)。
第四步:在同一位置,找到 网络访问:不允许存储 LAN 管理器哈希值,右键→属性→勾选“已启用”。【此操作防止服务端因缓存LM哈希而触发降级响应,否则即使客户端设为NTLMv2,仍可能被服务端拉回NTLM】
配置Linux端Samba服务支持NTLMv2
方法一:直接编辑主配置文件
在Linux终端执行:sudo nano /etc/samba/smb.conf。
定位到 [global] 区块,在其下方添加两行:
ntlm auth = yes
lanman auth = no
这两行明确告诉Samba:只接受NTLMv2质询/响应,彻底禁用LAN Manager认证路径。
方法二:同步关闭来宾映射干扰
在同一个 smb.conf 文件中,查找 map to guest 行,确保它不是 map to guest = bad user;若存在,改为 map to guest = never。【设为never可避免认证失败时自动降级为guest身份,强制走真实用户凭据验证流程】
重启Samba服务并刷新Windows策略
在Linux终端执行:sudo systemctl restart smbd nmbd。
回到Windows,以管理员身份运行命令提示符,执行:gpupdate /force。
这一步必须执行,否则组策略变更不会立即应用到SMB客户端栈——【未执行gpupdate会导致新策略处于挂起状态,连接仍使用旧认证等级】。
重启完成后,尝试重新映射网络驱动器:资源管理器→右键“网络”→“映射网络驱动器”→输入 \192.168.x.xsharename→勾选“重新连接”→输入Samba用户名密码。











