如何修改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
相关产品推荐
相关产品推荐

