Windows 11 无法访问 SMB Guest 共享:"你组织的安全策略阻止未经身份验证的来宾访问"及"出现了扩展错误"解决方法
前言
最近给家里云配置了一个 Samba 匿名共享,本来想着局域网里直接 Guest 访问就行,结果Windows 10、手机、Linux,甚至电视都能正常打开,唯独 Windows 11 一直连不上。
第一次连接时,Windows 直接弹出了下面这段提示:
你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问。这些策略可帮助保护你的电脑免受网络上不安全设备或恶意设备的威胁。
按照网上搜到的方法开启了 Guest 登录之后,本以为问题已经解决了,结果重启电脑再次连接,又变成了另一个更加莫名其妙的错误:
因为发生下列错误,无法创建映射网络驱动器:
出现了扩展错误。
折腾了半天,最后发现真正的问题并不在 Samba,而是在 Windows 11 的 SMB 安全策略。
我的环境
- 客户端:Windows 11
- 服务端:Linux + Samba
- 共享方式:Guest 匿名访问,无需用户名和密码
Samba 已确认允许匿名访问,例如:
guest ok = yes
browseable = yes
read only = no说明服务端本身没有问题。
第一步:允许 Windows 使用 Guest 登录
Windows 11 默认禁止未经身份验证的 Guest 登录,因此首先需要开启对应策略。
方法一:组策略(专业版)
打开:
gpedit.msc依次进入:
计算机配置
└── 管理模板
└── 网络
└── Lanman 工作站
└── 启用不安全的来宾登录修改为:
已启用方法二:PowerShell
以管理员身份运行:
Set-SmbClientConfiguration -EnableInsecureGuestLogons $true -Force修改完成后重启电脑。
开启 Guest 后,问题依旧
重启后再次访问共享,结果没有再提示 Guest 被禁止,而是出现了新的错误:
因为发生下列错误,无法创建映射网络驱动器:
出现了扩展错误。
这个错误几乎没有任何有效信息,一开始我还以为是 Samba 配置出了问题。
于是查看 Windows 当前的 SMB 配置:
Get-SmbClientConfiguration | Select EnableInsecureGuestLogons,RequireSecuritySignature,EnableSecuritySignature输出如下:
EnableInsecureGuestLogons True
RequireSecuritySignature True
EnableSecuritySignature True看到这里,问题终于找到了。
问题原因
仔细分析这三个配置会发现,它们其实互相”打架”了。
Windows 已经允许 Guest 登录:
EnableInsecureGuestLogons = True但与此同时,又要求所有 SMB 连接必须启用数字签名:
RequireSecuritySignature = True问题就在这里。
Guest(匿名)登录本身无法完成 SMB 数字签名认证,因此 Windows 一边允许 Guest 登录,一边又强制要求所有连接必须签名,两者互相冲突,最终导致连接失败,并只给出了一个毫无提示价值的”扩展错误”。
最终解决方法
既然 Guest 无法完成 SMB 数字签名认证,那就关闭客户端对 SMB 签名的强制要求即可。
管理员 PowerShell:
Set-SmbClientConfiguration -RequireSecuritySignature $false -Force随后重启 Workstation 服务:
Restart-Service LanmanWorkstation如果提示服务无法重启,也可以直接重启电脑。
再次访问:
\\服务器IP共享即可正常打开。
为了确认配置是否生效,可以再次执行:
Get-SmbClientConfiguration | Select EnableInsecureGuestLogons,RequireSecuritySignature,EnableSecuritySignature正常情况下应该类似于:
EnableInsecureGuestLogons True
RequireSecuritySignature False
EnableSecuritySignature True需要注意的是:
EnableSecuritySignature:表示支持 SMB 签名,建议保持开启。RequireSecuritySignature:表示强制要求所有连接必须使用 SMB 签名,而 Guest 无法满足这一要求。
真正导致匿名共享无法访问的,就是第二项。
为什么 Windows 11 会这样设计?
相比以前的 Windows,新版本对于 SMB 的安全策略明显更加严格。
主要原因包括:
- 防止中间人攻击(MITM)
- 防止恶意设备伪装 SMB 服务器
- 防止勒索软件通过 SMB 横向传播
因此微软默认:
- 禁止 Guest 匿名登录;
- 在部分版本中默认要求 SMB 数字签名。
对于企业环境来说,这样做可以提高安全性;但如果只是家庭局域网、NAS 或个人服务器,就容易出现本文遇到的问题。
总结
如果你的 Windows 11 无法访问 Samba 或 NAS 的 Guest 匿名共享,并依次遇到了下面两个错误:
错误一:
你组织的安全策略阻止未经身份验证的来宾访问
执行:
Set-SmbClientConfiguration -EnableInsecureGuestLogons $true -Force错误二:
出现了扩展错误
执行:
Set-SmbClientConfiguration -RequireSecuritySignature $false -Force重启电脑(或重启 Workstation 服务)后即可恢复正常。
写在最后
这次踩坑最大的收获就是,Windows 11 对 SMB 的安全策略已经和以前完全不一样了。
网上很多文章只告诉你开启 Guest 登录,却没有提到 SMB 数字签名的问题,所以即使按照教程操作,也很容易卡在”出现了扩展错误”这里。
如果你的共享仅用于家庭局域网、个人 NAS 或 Linux 服务器,关闭 RequireSecuritySignature 基本就可以解决问题。
如果是在企业环境或者公网环境,还是建议创建独立的 Samba 用户,通过用户名和密码进行身份验证,而不是长期依赖 Guest 匿名共享。这样不仅兼容 Windows 11 的默认安全策略,也更加安全。