使用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取值为密钥库中的kafkaadminadmin_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
相关产品推荐
相关产品推荐

