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

本文提供了服务器消息块 (SMB) 连接时出现的错误消息的解决方案。

适用于:Windows 10 - 所有版本,Windows Server 2012 R2
原始 KB 编号: 2686098

症状

在基于Windows Server 2012或基于Windows 8的计算机无法连接到支持 SMBv2 文件协议的第三方文件服务器后,你会收到以下错误消息之一或类似的错误消息,具体取决于访问第三方文件服务器的方式:

  • 使用具有 UNC 路径的 DIR 命令时:

    签名无效

  • 运行 NET USE 命令时:

    发生系统错误2148073478

  • 尝试浏览到 UNC 路径时:

    发生扩展错误

在以下常见方案中,可能会遇到这些错误:

  • Hyper-V 服务器的实时迁移 (运行Hyper-V Server 2012或Windows Server 2012,窗口 8) 失败。 出现这种情况的原因是,需要将存储托管在 SMB 共享上。
  • 无法在 Window 8-Windows Server 2012 环境中将网络驱动器映射到 SAN。

原因

此问题是由Secure Negotiate添加到 SMB 3.0 以用于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 浏览器中换行到多行。

References

有关详细信息,请参阅 Windows Server 2012 文件服务器中的新 SMB 3.0 功能