本文提供了一个解决方案,用于解决服务器消息块(SMB)连接上发生的错误消息。
原始 KB 数: 2686098
现象
在基于 Windows Server 2012 或基于 Windows 8 的计算机无法连接到支持 SMBv2 文件协议的第三方文件服务器后,你会收到以下错误消息之一或类似的错误消息,具体取决于访问第三方文件服务器的方式:
使用具有 UNC 路径的 DIR 命令时:
Invalid Signature
运行 NET USE 命令时:
发生系统错误2148073478
尝试浏览到 UNC 路径时:
已发生扩展错误
在以下常见方案中可能会遇到这些错误:
- Hyper-V 服务器的实时迁移(运行 Hyper-V Server 2012 或 Windows Server 2012 和 Windows 8)失败。 之所以发生这种情况,是因为需要将存储托管在 SMB 共享上。
- 无法在 Window 8-Windows Server 2012 环境中将网络驱动器映射到 SAN。
原因
此问题是由 Secure Negotiate
添加到 SMB 3.0 for Windows Server 2012 和 Windows 8 的功能引起的。 此功能取决于所有 SMBv2 服务器的正确错误响应签名,包括仅支持协议版本 2.0 和 2.1 的服务器。 某些第三方文件服务器不会返回已签名的错误响应。 因此连接失败。
解决方法
若要解决此问题,请联系第三方文件服务器供应商请求更新,使文件服务器能够支持 Windows Server 2012 和 Windows 8 客户端。
解决方法
警告
不建议禁用安全协商的要求,因为这样可以降低计算机安全性。 仅将安全协商禁用为临时故障排除措施。 不要使安全协商处于禁用状态;请改为联系第三方文件服务器供应商,并请求更新,允许其文件服务器正确支持 Windows Server 2012 和 Windows 8 客户端。
将来的操作系统中可能会删除禁用安全协商功能的功能。
若要解决此问题,请使用以下任一方法:
要求对第三方文件服务器进行签名
若要要求对 SMB 客户端或 SMB 服务器进行签名,请打开
RequireSecuritySignature
该设置。 有关将签名设置设置为 供应商 SMB 服务器上所需的 说明,请参阅供应商的文档。可以在 Windows Server 2012 或 Windows 8 客户端上使用 PowerShell 启用签名。 若要执行此操作,请运行以下命令:
Set-SmbClientConfiguration -RequireSecuritySignature $true
在客户端上禁用安全协商
可以在 Windows Server 2012 或 Windows 8 客户端上使用 PowerShell 禁用 安全协商 选项。 若要执行此操作,请运行以下命令:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" RequireSecureNegotiate -Value 0 -Force
注意
此命令可能会在 Web 浏览器中换行到多行。
参考
有关详细信息,请参阅 Windows Server 2012 文件服务器中的新 SMB 3.0 功能