terraform - Terraform Azure VM SSH 密钥
问题描述
我是 Terraform 的新手,需要一些帮助。我已经成功创建了一个 VM,并且可以毫无问题地手动 SSH 进入它。问题是我正在与一个项目团队合作,如果不让 Terraform 删除所有资源并重新创建它们,他们就无法对 Tf 文件进行任何更改。我认为这是因为他们的 SSH 密钥与我的不同。
admin_ssh_key {
username = "azureroot"
public_key = file("~/.ssh/id_rsa.pub")}
因为我的 ssh 密钥的内容与我的队友不同,它会破坏虚拟机并使用应用 terraform 的人的密钥重新创建它。有没有办法解决这个问题?这导致了很多问题,因为我们已经破坏了多个虚拟机,因为密钥不同。
解决方案
问题是由于虚拟机的配置造成的。似乎您使用该资源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 规则。
推荐阅读
- javascript - 超级表达式必须为 null 或函数(自定义标记)
- android - 如何更改对话框的文本?
- python-2.7 - Unix 上的 Python 脚本在 csv 文件上写入,但在 Windows 7 中文件末尾的符号不可读
- bash - Linux/Bash:如果表中的 id 相同,则替换
- r - 减少 R 中向量元素的总和
- java - java.security.NoSuchAlgorithmException:PKCS11 KeyStore 不可用,尝试在 java 11 中使用 SUNPKCS11 启用 FIPS 模式
- python - 在 pd.DataFrame.query() 之后插入值并保留原始数据
- .net - SMTP 服务器需要安全连接,或者客户端未仅在 Azure 上进行身份验证
- android - Cordova Chrome OS 从平板电脑模式切换到笔记本电脑模式?
- c# - 如何处理具有不同属性类型的响应c#