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

使用Terraform创建Azure Linux VM时SSH密钥配置报错求助

Terraform创建Azure Linux虚拟机SSH密钥路径错误解决

问题场景

使用Terraform创建Azure Linux虚拟机时,配置代码如下:

resource "tls_private_key" "this" {
  for_each = local.worker_env_map
  algorithm = "RSA"
  rsa_bits  = 4096
}

resource "azurerm_linux_virtual_machine" "example" {
  name                = "worker-machine"
  resource_group_name = "rogertest"
  location            = "australiaeast"
  size                = "Standard_D2_v4"
  admin_username = data.azurerm_key_vault_secret.kafkausername.value
  network_interface_ids = [
    azurerm_network_interface.example.id,
  ]

  admin_ssh_key {
    username   = "adminuser"
    public_key = tls_private_key.this["env1"].public_key_openssh
  }

  os_disk {
    caching              = "ReadWrite"
    storage_account_type = "Standard_LRS"
  }

  source_image_reference {
    publisher = "Canonical"
    offer     = "UbuntuServer"
    sku       = "18_04-lts-gen2"
    version   = "latest"
  }
}

持续收到以下错误:

Code="InvalidParameter" Message="Destination path for SSH public keys is currently limited to its default value /home/kafkaadmin/.ssh/authorized_keys  due to a known issue in Linux provisioning agent." 
Target="linuxConfiguration.ssh.publicKeys.path"

问题原因

配置中**admin_username与admin_ssh_key块内的username不匹配**:

  • admin_username取值为密钥库中的kafkaadmin
  • admin_ssh_key指定的用户名是adminuser

Azure Linux预配代理当前存在已知限制,SSH公钥的目标路径只能是admin_username对应用户的默认目录(即/home/kafkaadmin/.ssh/authorized_keys)。当指定的SSH用户名与管理员用户名不一致时,系统试图写入非默认路径,触发该错误。

解决方案

将admin_ssh_key块中的username修改为与admin_username一致的值,直接引用密钥库的用户名即可:

admin_ssh_key {
  username   = data.azurerm_key_vault_secret.kafkausername.value
  public_key = tls_private_key.this["env1"].public_key_openssh
}

修改后,SSH公钥会被写入预配代理允许的默认路径,即可正常创建虚拟机。

内容的提问来源于stack exchange,提问作者Roger Chen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:40:33