如何在 Terraform 中使用受口令保护的私有 SSH 密钥?

7

我正在按照这个教程 https://www.digitalocean.com/community/tutorials/how-to-use-ansible-with-terraform-for-configuration-management 学习 Terraform 和 Ansible。

当我执行 terraform apply 命令时,它会抛出一个错误:

digitalocean_droplet.web[2]: Provisioning with 'remote-exec'...

Error: Failed to parse ssh private key: ssh: this private key is passphrase protected

Error: Error creating droplet: POST https://api.digitalocean.com/v2/droplets: 422 Failed to resolve VPC

  on droplets.tf line 1, in resource "digitalocean_droplet" "web":
   1: resource "digitalocean_droplet" "web" {

这是代码:
  provisioner "remote-exec" {
    inline = ["sudo apt update", "sudo apt install python3 -y", "echo DONE!"]

    connection {
      host        = self.ipv4_address
      type        = "ssh"
      user        = "root"
      private_key = file(var.pvt_key)
    }
  }

我机器上的私钥 SSH key (~/.ssh/id_rsa) 受到了口令保护。我该如何使用它?

1个回答

13
你可以使用ssh-add ~/.ssh/id_rsa将所需的ssh密钥添加到ssh-agent中,然后在连接部分的agent字段中设置为:
connection {
  host        = self.ipv4_address
  type        = "ssh"
  user        = "root"
  agent       = true
}

如果使用agent字段,请不要使用private_key字段。它们会发生冲突。

7
如果使用“代理”字段,请勿同时使用“私钥”字段,因为它们会产生冲突。 - SunSparc
@SunSparc的评论是我这种情况下的解决方案,除了主要的解决方案之外。 - csotiriou

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接