You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Terraform HyperV Provider与WinRM连接的认证方式?

问题:Terraform HyperV Provider配置WinRM认证方式(Negotiate替代Basic)

我在使用Terraform的HyperV Provider创建虚拟机时,遇到WinRM认证问题:采用Basic Auth无法通过凭据访问HyperV主机,但切换为Negotiate Auth时连接可成功。不清楚如何在Terraform配置中指定使用Negotiate认证方式。

当前配置信息

Terraform Provider配置

provider "hyperv" {
  user     = myusername
  password = mypassword
  host     = myhost
  port     = 5985
  https    = false
  insecure = true
  timeout  = "60s"
}

WinRM客户端配置(winrm/config/client)

NetworkDelayms = 5000
    URLPrefix = wsman
    AllowUnencrypted = true
    Auth
        Basic = true
        Digest = true
        Kerberos = true
        Negotiate = true
        Certificate = true
        CredSSP = true
    DefaultPorts
        HTTP = 5985
        HTTPS = 5986
    TrustedHosts = *

WinRM服务端配置(winrm/config/service)

MaxConcurrentOperations = 4294967295
MaxConcurrentOperationsPerUser = 1500
EnumerationTimeoutms = 240000
MaxConnections = 300
MaxPacketRetrievalTimeSeconds = 120
AllowUnencrypted = true
Auth
    Basic = true
    Kerberos = true
    Negotiate = true
    Certificate = true
    CredSSP = true
    CbtHardeningLevel = Relaxed
DefaultPorts
    HTTP = 5985
    HTTPS = 5986
IPv4Filter = *
IPv6Filter = *
EnableCompatibilityHttpListener = true
EnableCompatibilityHttpsListener = true
CertificateThumbprint
AllowRemoteAccess = true

解决方案

HyperV Provider默认可能使用Basic Auth,只需在provider配置中添加auth_type = "negotiate"参数,即可指定使用Negotiate认证方式。修改后的完整配置如下:

provider "hyperv" {
  user       = myusername
  password   = mypassword
  host       = myhost
  port       = 5985
  https      = false
  insecure   = true
  timeout    = "60s"
  auth_type  = "negotiate" # 新增此行指定认证方式
}

补充说明

  • 你的WinRM客户端和服务端配置中已经启用了Negotiate认证,无需额外调整
  • 若处于域环境,Negotiate会自动使用Kerberos认证;非域环境下则回退到NTLM认证

内容的提问来源于stack exchange,提问作者Christian Prieto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 16:30:13