Terraform Azure_Linux_VM 使 SSH 密钥不起作用
Terraform Azure_Linux_VM makes SSH key not work
如何通过 SSH 连接到我新创建的 Azure_VM?
我正在通过 Terraform 设置一个简单的 VM,为其分配一个 public IP 和我在本地拥有的 SSH 密钥。
使用 terraform 页面本身的教程:https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/linux_virtual_machine
resource "azurerm_linux_virtual_machine" "example" {
...
admin_username = "adminuser"
admin_ssh_key {
username = "adminuser"
public_key = file("~/.ssh/id_rsa.pub")
}
[...]
}
但是,Terraform 创建机器后,我无法登录机器。
$ ssh adminuser@xxx.xxx.xxx.xxx
产量:
adminuser@137.117.168.115: Permission denied (publickey).
尝试过:
一开始我以为是 public 键错了。所以我检查了机器上的 public_key:
az vm list --query "[].{SSH:
osProfile.linuxConfiguration.ssh.publicKeys[].keyData}" -o json
并将其与我本地计算机上的 public 密钥进行比较。
它们是相同的,除了 Azure-VM 输出中打印的一个“\n”。
在我的本地 public 键中添加一个新行但是没有解决问题。
收获:
有时,在破坏机器并重建它之后,我可以登录。在添加 terraform destroy
和 terraform apply
之后,它不再起作用了。我不
不要明白我做错了什么
那么,如何通过 SSH 连接到我新创建的 VM?
原来我确实用 cloud_init 配置覆盖了默认值 (adminuser
)。
将 default 用户添加到 cloud_config 后,我可以通过 SSH 连接到 adminuser@xxx.xxx.xxx.xxx
data "template_cloudinit_config" "config" {
gzip = true
base64_encode = true
part {
content_type = "text/cloud-config"
content = "users: [default, foobar, barfoo]"
}
}
如何通过 SSH 连接到我新创建的 Azure_VM?
我正在通过 Terraform 设置一个简单的 VM,为其分配一个 public IP 和我在本地拥有的 SSH 密钥。 使用 terraform 页面本身的教程:https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/linux_virtual_machine
resource "azurerm_linux_virtual_machine" "example" {
...
admin_username = "adminuser"
admin_ssh_key {
username = "adminuser"
public_key = file("~/.ssh/id_rsa.pub")
}
[...]
}
但是,Terraform 创建机器后,我无法登录机器。
$ ssh adminuser@xxx.xxx.xxx.xxx
产量:
adminuser@137.117.168.115: Permission denied (publickey).
尝试过: 一开始我以为是 public 键错了。所以我检查了机器上的 public_key:
az vm list --query "[].{SSH:
osProfile.linuxConfiguration.ssh.publicKeys[].keyData}" -o json
并将其与我本地计算机上的 public 密钥进行比较。 它们是相同的,除了 Azure-VM 输出中打印的一个“\n”。 在我的本地 public 键中添加一个新行但是没有解决问题。
收获:
有时,在破坏机器并重建它之后,我可以登录。在添加 terraform destroy
和 terraform apply
之后,它不再起作用了。我不
不要明白我做错了什么
那么,如何通过 SSH 连接到我新创建的 VM?
原来我确实用 cloud_init 配置覆盖了默认值 (adminuser
)。
将 default 用户添加到 cloud_config 后,我可以通过 SSH 连接到 adminuser@xxx.xxx.xxx.xxx
data "template_cloudinit_config" "config" {
gzip = true
base64_encode = true
part {
content_type = "text/cloud-config"
content = "users: [default, foobar, barfoo]"
}
}