Azure中的Terraform Windows Server 2016和域加入问题登录到域时出现网络级别身份验证错误消息

px9o7tmv  于 2023-02-13  发布在  Windows
关注(0)|答案(1)|浏览(130)

我成功地让Windows Server 2016启动并加入域。但是,当我进入远程桌面登录时,它抛出了一个关于网络级身份验证的错误。无法联系到域控制器以执行网络级身份验证(NLA)。
我在https://www.bing.com/videos/search?q=requires+network+level+authentication+error&docid=608000415751557665&mid=8CE580438CBAEAC747AC8CE580438CBAEAC747AC&view=detail&FORM=VIRE上看过一些关于变通方案的视频。
有没有一种方法可以用地形和正面来解决这个问题呢?
要加入我正在使用的域:

name = "domjoin"
    virtual_machine_id = azurerm_windows_virtual_machine.vm_windows_vm.id
    publisher = "Microsoft.Compute"
    type = "JsonADDomainExtension"
    type_handler_version = "1.3"
    settings = <<SETTINGS
    {
    "Name": "mydomain.com",
    "User": "mydomain.com\\myuser",
    "Restart": "true",
    "Options": "3"
    }
    SETTINGS

    protected_settings = <<PROTECTED_SETTINGS
    {
    "Password": "${var.admin_password}"
    }
    PROTECTED_SETTINGS
    depends_on = [ azurerm_windows_virtual_machine.vm_windows_vm ]

也许我应该在这个domjoin代码中添加一个选项吗?
我可以用我的本地管理员帐户登录就好了。我看到服务器连接到域。域上的nslookup显示一个ip地址,该地址被配置为可通过防火墙规则访问,因此它可以访问域控制器。

q3qa4bjr

q3qa4bjr1#

看起来可能有一些设置可以帮助解决这个问题,请参见here,可能所有需要的可能是:"EnableCredSspSupport": "true"在您的domjoin设置块中。
您可能还需要对服务器端的注册表执行一些操作,这可以通过使用remote-exec来完成。
例如:

resource "azurerm_windows_virtual_machine" "example" {
  name                  = "example-vm"
  location              = azurerm_resource_group.example.location
  resource_group_name   = azurerm_resource_group.example.name
  network_interface_ids = [azurerm_network_interface.example.id]
  vm_size               = "Standard_DS1_v2"

  storage_image_reference {
    publisher = "MicrosoftWindowsServer"
    offer     = "WindowsServer"
    sku       = "2019-Datacenter"
    version   = "latest"
  }

  storage_os_disk {
    name              = "example-os-disk"
    caching           = "ReadWrite"
    create_option     = "FromImage"
    managed_disk_type = "Standard_LRS"
  }

  os_profile {
    computer_name  = "example-vm"
    admin_username = "adminuser"
    admin_password = "SuperSecurePassword1234!"
  }

  os_profile_windows_config {
    provision_vm_agent = true
  }

  provisioner "remote-exec" {
    inline = [
      "echo Updating Windows...",
      "powershell.exe -Command \"& {Get-WindowsUpdate -Install}\"",
      "echo Done updating Windows."
    ]

    connection {
      type        = "winrm"
      user        = "adminuser"
      password    = "SuperSecurePassword1234!"
      timeout     = "30m"
    }
  }
}

为了在注册表中设置正确的键,您可能需要在remote-exec块中使用类似下面的代码(我还没有验证这段代码):

Set-ItemProperty -Path 'HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-tcp' -Name 'SecurityLayer' -Value 0

为了使Terraform配置更简洁,我建议使用Powershell脚本的模板,请参见here
希望这能帮上忙

相关问题