首页 > 解决方案 > Terraform Azure VM SSH 密钥

问题描述

我是 Terraform 的新手,需要一些帮助。我已经成功创建了一个 VM,并且可以毫无问题地手动 SSH 进入它。问题是我正在与一个项目团队合作,如果不让 Terraform 删除所有资源并重新创建它们,他们就无法对 Tf 文件进行任何更改。我认为这是因为他们的 SSH 密钥与我的不同。

admin_ssh_key {
   username = "azureroot"
   public_key = file("~/.ssh/id_rsa.pub")}

因为我的 ssh 密钥的内容与我的队友不同,它会破坏虚拟机并使用应用 terraform 的人的密钥重新创建它。有没有办法解决这个问题?这导致了很多问题,因为我们已经破坏了多个虚拟机,因为密钥不同。

标签: terraformterraform-provider-azure

解决方案


问题是由于虚拟机的配置造成的。似乎您使用该资源azurerm_linux_virtual_machine并将 SSH 密钥设置为:

admin_username      = "azureroot"
admin_ssh_key {
   username = "azureroot"
   public_key = file("~/.ssh/id_rsa.pub")
}

对于公钥,您可以使用该函数file()从当前机器加载公钥,路径为~/.ssh/id_rsa.pub. 因此,当您在另一台机器上时,也许是您队友的机器,那么公钥应该与您的不同。这就是问题所在。

在这里,我有两个建议给你。一种是像这样使用静态公钥:

admin_username      = "azureroot"
admin_ssh_key {
   username = "azureroot"
   public_key = "xxxxxxxxx"
}

那么无论你在哪里执行 Terraform 代码,公钥都不会导致问题。您可以根据需要更改内容,例如 NSG 规则。


推荐阅读