踩坑备忘:Win11 24H2 访问 Win10 免密共享,反复弹"需要登录"
|
约 8 分钟
QThinker
80后,前地产屌丝,宽客,Coder
环境:客户端 Windows 11 24H2(内部版本 26100)|服务端 Windows 10,已开启文件夹共享并选择"关闭密码保护的共享"
现象:资源管理器访问\\192.168.x.x不断弹出"输入网络凭据"登录框,输什么都不对;命令行报系统错误 5,拒绝访问
一、先说结论
根因不在共享那台电脑,而在客户端。
Windows 11 24H2 把 SMB 客户端的强制签名(RequireSecuritySignature)默认改成了 True,而对方"关闭密码保护的共享"走的是 Guest(来宾)会话——来宾会话没有会话密钥,无法签名,于是被客户端直接拒绝,表现就是反复要求登录。
最终需要三件套配合,缺一不可:
| # | 配置 | 作用 |
|---|---|---|
| 1 | 关闭 SMB 客户端强制签名 | 让无法签名的来宾会话能建立 |
| 2 | 启用不安全的来宾登录 | 客户端允许 Guest 方式连接 |
| 3 | 凭据管理器存 guest 凭据 | 避免客户端拿 Microsoft 账户去试导致弹框 |
二、排查过程实录
1. 逐项排除客户端常规嫌疑
# 已存凭据(排除陈旧凭据干扰)
cmdkey /list
# 现有映射(排除残留会话)
net use
# SMB 客户端配置(关键输出)
Get-SmbClientConfiguration | Format-List EnableInsecureGuestLogons,EnableSecuritySignature,RequireSecuritySignature
结果:
- 来宾登录
EnableInsecureGuestLogons : True✅(之前组策略已启用) - 192.168.x.x 无陈旧凭据、无残留映射 ✅
- 网络配置文件为"专用"(Private)✅
- 445 端口连通 ✅(
Test-NetConnection 192.168.x.x -Port 445→True) RequireSecuritySignature : True← 可疑点
2. 复现并定位
net view \\192.168.x.x
# 系统错误 5。拒绝访问。
传输层正常(445 通),错误发生在认证/会话层。24H2 强制签名 + 来宾会话无法签名,与所有症状吻合。
3. 关签名后验证
管理员 PowerShell:
Set-SmbClientConfiguration -RequireSecuritySignature $false -Confirm:$false
随后显式用 guest 建会话成功(exit=0),证明签名正是阻断点。
注意一个细节:此时
net view仍报错 5——因为它用的是当前登录的 Microsoft 账户去连,对方服务器不认。显式/user:guest才通。所以还需要第三步"固定用 guest 连"。
4. 持久化 guest 凭据
net use \\192.168.x.x\IPC$ /delete /y # 清掉临时会话
cmdkey /add:192.168.x.x /user:guest /pass:"" # 存储空密码 guest 凭据
net view \\192.168.x.x # 默认凭据路径直连成功 ✅
重启后资源管理器也会走存储的 guest 凭据,不再弹框。
三、修复步骤汇总(照做即可)
① 关闭 SMB 客户端强制签名(24H2 关键)
管理员 PowerShell 执行:
Set-SmbClientConfiguration -RequireSecuritySignature $false -Confirm:$false
② 启用不安全的来宾登录
两种方式等价(组策略启用的本质就是写注册表):
- 组策略:
gpedit.msc→ 计算机配置 → 管理模板 → 网络 → Lanman 工作站 → "启用不安全的来宾登录" → 已启用(写入HKLM\SOFTWARE\Policies\Microsoft\Windows\LanmanWorkstation!AllowInsecureGuestAuth = 1) - 注册表:
HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters下新建 DWORDAllowInsecureGuestAuth = 1
③ 存储 guest 凭据(防止弹框的临门一脚)
cmdkey /add:192.168.x.x /user:guest /pass:""
四、验证清单
Get-SmbClientConfiguration | Format-List RequireSecuritySignature,EnableInsecureGuestLogons
# RequireSecuritySignature : False
# EnableInsecureGuestLogons : True
net use \\192.168.x.x\IPC$ /delete /y # 删会话模拟重启后的干净状态
net view \\192.168.x.x # 能列出共享 = 持久化路径 OK
再用 Shell 接口确认共享可枚举、文件可浏览:
(New-Object -ComObject Shell.Application).NameSpace("\\192.168.x.x").Items() | ForEach-Object { $_.Name }
五、经验总结
- "反复要密码"≠服务器要密码,很可能是客户端策略把会话拒了(错误 5 是典型特征)。
- 24H2 两个默认值变更要牢记:SMB 客户端强制签名默认开(
RequireSecuritySignature=True)、Pro 版不安全来宾登录默认关。免密共享/NAS 打不开,先查这两个。 - 来宾会话无法签名:签名要求与 Guest 免密访问天然互斥,二选一。
net view和资源管理器走的凭据不同:前者用当前账户,存储凭据后才会走 guest。实测通过 ≠ 重启后通过,删掉会话再测一遍才靠谱。- 组策略和注册表是同一个开关的两个入口,不要重复设置;排查时用
Get-SmbClientConfiguration看生效值最直接。
安全代价与替代方案
- 关闭强制签名后,局域网内 SMB 报文可被篡改(无完整性保护)。家用可信网段可接受。
- 更安全的替代:服务端改用真实账号 + 密码共享(开启密码保护共享,用对端登录账户连接),此时签名随 NTLM 会话密钥正常工作,可以把签名要求改回去:
Set-SmbClientConfiguration -RequireSecuritySignature $true # 管理员 PowerShell
- 若哪天又弹登录框:先
net use * /delete清残留会话,再检查凭据管理器里192.168.x.x的 guest 凭据是否还在。
143
2
评论
2发表评论