Windows Server 2012 或 Windows 8 中的 SMB 连接上的系统错误2148073478、扩展错误或签名无效错误消息

本文提供了一个解决方案,用于解决服务器消息块(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 功能