2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Terraformにおいてローカルでssh-keygenを行い、作成された内容を利用する

Posted at

備忘

TerraformにおいてローカルでSshキーを作成して利用するには、tls_private_keyリソースを利用する方法も考えられるが、公式でも触れているとおり、tfstateに秘密キーを情報が含まれてしまう為、特にproduction環境では望ましくない。

tls_private_key (Resource)
https://registry.terraform.io/providers/hashicorp/tls/latest/docs/resources/private_key

Security Notice
The private key generated by this resource will be stored unencrypted in your Terraform state file. Use of this resource for production deployments is not recommended. Instead, generate a private key file outside of Terraform and distribute it securely to the system where Terraform will be run.

ここでは、ssh-keygenコマンドより作成された公開キーの内容を利用することで、秘密キーに関する情報をtfstateに残さない対応を考える。

環境

Terraform v1.3.9

ソリューション例

local-execにて、ローカルにssh keyファイルを作成
その完了を、depends_onを用いて待って、local_file (Data Source)にて内容を取得

// ssh keyを置くディレクトリー
variable "ssh_keys" {
  type = string
  #default = "~/.ssh/"
  default = "."
}

// ノード名。外部から指定しなければnode01を使用。
variable "nodes" {
  type = list(
    object(
      { name = string, },
    )
  )
  default = [
    { name = "node01", },
  ]
}

// ssh-keygenコマンドは、キーファイルが既に存在する場合、上書きしないが、エラーで終わるのでexit 0を追加している。
resource "null_resource" "ssh-keygen" {
  count = length(var.nodes)
  provisioner "local-exec" {
    command = "ssh-keygen -m PEM  -C '' -N '' -f ${var.ssh_keys}/id_rsa_${var.nodes[count.index].name}; exit 0"
  }
}

// local_file (Data Source)にて公開キーの内容を取得。content属性にて確認できる
// file("ファイル名")によるファイル内容取得は、apply実行時点でファイルが存在しないとエラーとなってしまい使用できなかった。

data "local_file" "ssh-keygen" {
  count      = length(var.nodes)
  filename   = "${var.ssh_keys}/id_rsa_${var.nodes[count.index].name}.pub"
  depends_on = [null_resource.ssh-keygen]
}

// 公開キーの内容を表示。実際には公開キーの情報をクラウドのリソースで利用するケースが多いでしょう。
output "pub_keys" {
  value = data.local_file.ssh-keygen[*].content
}

実行

初期化

$ terraform init 
...
$ terraform validate
Success! The configuration is valid.

ノード情報は環境変数から渡してみる

$ export TF_VAR_nodes='[ {name="node03"}, {name="node04"} ]' 

実行

$ terraform apply --auto-approve 

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create
 <= read (data resources)

Terraform will perform the following actions:

  # data.local_file.ssh-keygen[0] will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "local_file" "ssh-keygen" {
      + content        = (known after apply)
      + content_base64 = (known after apply)
      + filename       = "./id_rsa_node03.pub"
      + id             = (known after apply)
    }

  # data.local_file.ssh-keygen[1] will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "local_file" "ssh-keygen" {
      + content        = (known after apply)
      + content_base64 = (known after apply)
      + filename       = "./id_rsa_node04.pub"
      + id             = (known after apply)
    }

  # null_resource.ssh-keygen[0] will be created
  + resource "null_resource" "ssh-keygen" {
      + id = (known after apply)
    }

  # null_resource.ssh-keygen[1] will be created
  + resource "null_resource" "ssh-keygen" {
      + id = (known after apply)
    }

Plan: 2 to add, 0 to change, 0 to destroy.

Changes to Outputs:
  + pub_keys = [
      + (known after apply),
      + (known after apply),
    ]
null_resource.ssh-keygen[0]: Creating...
null_resource.ssh-keygen[1]: Creating...
null_resource.ssh-keygen[1]: Provisioning with 'local-exec'...
null_resource.ssh-keygen[1] (local-exec): Executing: ["/bin/sh" "-c" "ssh-keygen -m PEM  -C '' -N '' -f ./id_rsa_node04; exit 0"]
null_resource.ssh-keygen[0]: Provisioning with 'local-exec'...
null_resource.ssh-keygen[0] (local-exec): Executing: ["/bin/sh" "-c" "ssh-keygen -m PEM  -C '' -N '' -f ./id_rsa_node03; exit 0"]
null_resource.ssh-keygen[1] (local-exec): Generating public/private rsa key pair.
null_resource.ssh-keygen[1] (local-exec): Your identification has been saved in ./id_rsa_node04
null_resource.ssh-keygen[1] (local-exec): Your public key has been saved in ./id_rsa_node04.pub
null_resource.ssh-keygen[1] (local-exec): The key fingerprint is:
null_resource.ssh-keygen[1] (local-exec): SHA256:FDYoqyMM24BqAKoTXyLqb4BIaN6AXiFgzEPtkkimANk
null_resource.ssh-keygen[1] (local-exec): The key's randomart image is:
null_resource.ssh-keygen[1] (local-exec): +---[RSA 3072]----+
null_resource.ssh-keygen[1] (local-exec): |O=.    .+        |
null_resource.ssh-keygen[1] (local-exec): |=BEo. .. o       |
null_resource.ssh-keygen[1] (local-exec): |% = .o  .        |
null_resource.ssh-keygen[1] (local-exec): |&*.oo  .         |
null_resource.ssh-keygen[1] (local-exec): |#B=+    S        |
null_resource.ssh-keygen[1] (local-exec): |X*=.             |
null_resource.ssh-keygen[1] (local-exec): |oo..             |
null_resource.ssh-keygen[1] (local-exec): | . .             |
null_resource.ssh-keygen[1] (local-exec): |  o.             |
null_resource.ssh-keygen[1] (local-exec): +----[SHA256]-----+
null_resource.ssh-keygen[1]: Creation complete after 0s [id=3802793460838414525]
null_resource.ssh-keygen[0] (local-exec): Generating public/private rsa key pair.
null_resource.ssh-keygen[0] (local-exec): Your identification has been saved in ./id_rsa_node03
null_resource.ssh-keygen[0] (local-exec): Your public key has been saved in ./id_rsa_node03.pub
null_resource.ssh-keygen[0] (local-exec): The key fingerprint is:
null_resource.ssh-keygen[0] (local-exec): SHA256:X9pbZIACSFJFhICLs93FhQztkgGhuUyYIpLsyIcABVs
null_resource.ssh-keygen[0] (local-exec): The key's randomart image is:
null_resource.ssh-keygen[0] (local-exec): +---[RSA 3072]----+
null_resource.ssh-keygen[0] (local-exec): |o+E*+X=.         |
null_resource.ssh-keygen[0] (local-exec): |=B .+ +..  .     |
null_resource.ssh-keygen[0] (local-exec): |&+   = .. . .    |
null_resource.ssh-keygen[0] (local-exec): |#.. o +  .   .   |
null_resource.ssh-keygen[0] (local-exec): |oO o o  S   . o  |
null_resource.ssh-keygen[0] (local-exec): |. o .    . + o   |
null_resource.ssh-keygen[0] (local-exec): |          o . .  |
null_resource.ssh-keygen[0] (local-exec): |             o   |
null_resource.ssh-keygen[0] (local-exec): |            .    |
null_resource.ssh-keygen[0] (local-exec): +----[SHA256]-----+
null_resource.ssh-keygen[0]: Creation complete after 1s [id=65923644069703909]
data.local_file.ssh-keygen[0]: Reading...
data.local_file.ssh-keygen[1]: Reading...
data.local_file.ssh-keygen[0]: Read complete after 0s [id=b08bc1103b1d8aa05f22be806d89df833d41503c]
data.local_file.ssh-keygen[1]: Read complete after 0s [id=ea71dd91fbe9071a4ece7c3a41d5727b906e8792]

Apply complete! Resources: 2 added, 0 changed, 0 destroyed.

Outputs:

pub_keys = [
  <<-EOT
  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDPY3dlM/S4EVCkVF7GgRyziJ4az/r2O0x5zP0IDRBaIgpjLqQQXaVE7BKzAOY9sS3DqeUT1KyfePP43ctEA2zmnoQVM1eI7w5XDRsxk9MrpvKanWnWOuq8gTj4/6HFOb3NTgZVte/hCM7XwxJmA6KVgAlk9axakmgC1OvPpFDZek+hBy4NpIP5UWGknSukQcZneXvbn2WoLebdZJ5TRCW8TdiLT+tpaeg2hwBH1y8uIyhQI3mdDydp2dYexiFi83bbADtxrOKBRxP12zrG7htUgaMZTxdeBMxDhv+MIbPxzDN0+B4iR6d0hKHTaH3cB7KARK+6mYhDG5vMhYzuodzWJoKLIDVRSQVVtZRs2Yx8bZKqNHcyGtfgEgMgwwlKWMW65fFscbEOcJMY1oEvv9vmKb8s3qI2mmVLYn6C63u6liX606t7vTyRjq21dXwJOPcNARJiAnwP4YPhROmK8g/9XTzHxBSP/EVUvbDRlgtKuqtxssf+RrosJk1LdpAHSTc= 
  
  EOT,
  <<-EOT
  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCXOa0wOsAV03DZ/IUlvGxROXOO6ugdFe3e+6y1yCJ7SuYe8WzJe20Fa/es8qV2e/CLoBEhUSimrjyS7bzY/NbdpBebGbHZRY87ols3JhnXNHjLC3RvBx0PoNd4wJUYwG0LNfdfSL6HYFXJfIVVi/bFgiJH9qiBAsZdHUEbuzVagQsaEQDdVOmdNy3vZ4A+Pz3wWLfIXctseFycl6Arrje73DQBzmCz/5qrtTES6YqGmjLQh9m0CIJRhlzKK5uyZ/OyGTLM3saybuPnQG2k57jBroko7bLZpbhNNx+jIE0PJTsi0uSYC2+3+V0sUhgaksAveN9XaUpHXm4XVa7IwH4EmMdViW2VNNashwkqp1M5p7B8Zy7U+CxtXc8ZhrTAYhTRefnSGK5gWslpBtQNFpA5p+Ius1enEGHfSmtP/LnnnzisylVgSUPLqKgYqMeWYiy5Q8fC2mR3Mr/T6PMnc4bfrOT6wzXsAOdqmkjtdJgZzOwjLmwKH4UPcsnM4e51kH8= 
  
  EOT,
]

キーファイルが作成されている

$ ls
id_rsa_node03  id_rsa_node03.pub  id_rsa_node04  id_rsa_node04.pub  main.tf  terraform.tfstate

秘密キーがtfstateに含まれていないことの確認

$ head id_rsa_node03
-----BEGIN RSA PRIVATE KEY-----
MIIG5QIBAAKCAYEAz2N3ZTP0uBFQpFRexoEcs4ieGs/69jtMecz9CA0QWiIKYy6k
EF2lROwSswDmPbEtw6nlE9Ssn3jz+N3LRANs5p6EFTNXiO8OVw0bMZPTK6bymp1p
1jrqvIE4+P+hxTm9zU4GVbXv4QjO18MSZgOilYAJZPWsWpJoAtTrz6RQ2XpPoQcu
DaSD+VFhpJ0rpEHGZ3l7259lqC3m3WSeU0QlvE3Yi0/raWnoNocAR9cvLiMoUCN5
nQ8nadnWHsYhYvN22wA7cazigUcT9ds6xu4bVIGjGU8XXgTMQ4b/jCGz8cwzdPge
IkendISh02h93AeygESvupmIQxubzIWM7qHc1iaCiyA1UUkFVbWUbNmMfG2SqjR3
MhrX4BIDIMMJSljFuuXxbHGxDnCTGNaBL7/b5im/LN6iNpplS2J+gut7upYl+tOr
e708kY6ttXV8CTj3DQESYgJ8D+GD4UTpivIP/V08x8QUj/xFVL2w0ZYLSrqrcbLH
/ka6LCZNS3aQB0k3AgMBAAECggGABNzaMdSetP+C7+IijsOm6UwXbkguJD6OXn9r
$ grep MIIG5QIBAAKCAYEAz2N3ZTP0uBFQpFRexoEcs4ieGs/69jtMecz9CA0QWiIKYy6k terraform.tfstate 

再実行1

$ terraform apply --auto-approve 
null_resource.ssh-keygen[0]: Refreshing state... [id=65923644069703909]
null_resource.ssh-keygen[1]: Refreshing state... [id=3802793460838414525]
data.local_file.ssh-keygen[0]: Reading...
data.local_file.ssh-keygen[1]: Reading...
data.local_file.ssh-keygen[0]: Read complete after 0s [id=b08bc1103b1d8aa05f22be806d89df833d41503c]
data.local_file.ssh-keygen[1]: Read complete after 0s [id=ea71dd91fbe9071a4ece7c3a41d5727b906e8792]

No changes. Your infrastructure matches the configuration.

Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are needed.

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Outputs:

pub_keys = [
  <<-EOT
  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDPY3dlM/S4EVCkVF7GgRyziJ4az/r2O0x5zP0IDRBaIgpjLqQQXaVE7BKzAOY9sS3DqeUT1KyfePP43ctEA2zmnoQVM1eI7w5XDRsxk9MrpvKanWnWOuq8gTj4/6HFOb3NTgZVte/hCM7XwxJmA6KVgAlk9axakmgC1OvPpFDZek+hBy4NpIP5UWGknSukQcZneXvbn2WoLebdZJ5TRCW8TdiLT+tpaeg2hwBH1y8uIyhQI3mdDydp2dYexiFi83bbADtxrOKBRxP12zrG7htUgaMZTxdeBMxDhv+MIbPxzDN0+B4iR6d0hKHTaH3cB7KARK+6mYhDG5vMhYzuodzWJoKLIDVRSQVVtZRs2Yx8bZKqNHcyGtfgEgMgwwlKWMW65fFscbEOcJMY1oEvv9vmKb8s3qI2mmVLYn6C63u6liX606t7vTyRjq21dXwJOPcNARJiAnwP4YPhROmK8g/9XTzHxBSP/EVUvbDRlgtKuqtxssf+RrosJk1LdpAHSTc= 
  
  EOT,
  <<-EOT
  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCXOa0wOsAV03DZ/IUlvGxROXOO6ugdFe3e+6y1yCJ7SuYe8WzJe20Fa/es8qV2e/CLoBEhUSimrjyS7bzY/NbdpBebGbHZRY87ols3JhnXNHjLC3RvBx0PoNd4wJUYwG0LNfdfSL6HYFXJfIVVi/bFgiJH9qiBAsZdHUEbuzVagQsaEQDdVOmdNy3vZ4A+Pz3wWLfIXctseFycl6Arrje73DQBzmCz/5qrtTES6YqGmjLQh9m0CIJRhlzKK5uyZ/OyGTLM3saybuPnQG2k57jBroko7bLZpbhNNx+jIE0PJTsi0uSYC2+3+V0sUhgaksAveN9XaUpHXm4XVa7IwH4EmMdViW2VNNashwkqp1M5p7B8Zy7U+CxtXc8ZhrTAYhTRefnSGK5gWslpBtQNFpA5p+Ius1enEGHfSmtP/LnnnzisylVgSUPLqKgYqMeWYiy5Q8fC2mR3Mr/T6PMnc4bfrOT6wzXsAOdqmkjtdJgZzOwjLmwKH4UPcsnM4e51kH8= 
  
  EOT,
]

削除

$ terraform destroy --auto-approve 
null_resource.ssh-keygen[1]: Refreshing state... [id=3802793460838414525]
null_resource.ssh-keygen[0]: Refreshing state... [id=65923644069703909]
data.local_file.ssh-keygen[1]: Reading...
data.local_file.ssh-keygen[0]: Reading...
data.local_file.ssh-keygen[1]: Read complete after 0s [id=ea71dd91fbe9071a4ece7c3a41d5727b906e8792]
data.local_file.ssh-keygen[0]: Read complete after 0s [id=b08bc1103b1d8aa05f22be806d89df833d41503c]

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  - destroy

Terraform will perform the following actions:

  # null_resource.ssh-keygen[0] will be destroyed
  - resource "null_resource" "ssh-keygen" {
      - id = "65923644069703909" -> null
    }

  # null_resource.ssh-keygen[1] will be destroyed
  - resource "null_resource" "ssh-keygen" {
      - id = "3802793460838414525" -> null
    }

Plan: 0 to add, 0 to change, 2 to destroy.

Changes to Outputs:
  - pub_keys = [
      - <<-EOT
            ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDPY3dlM/S4EVCkVF7GgRyziJ4az/r2O0x5zP0IDRBaIgpjLqQQXaVE7BKzAOY9sS3DqeUT1KyfePP43ctEA2zmnoQVM1eI7w5XDRsxk9MrpvKanWnWOuq8gTj4/6HFOb3NTgZVte/hCM7XwxJmA6KVgAlk9axakmgC1OvPpFDZek+hBy4NpIP5UWGknSukQcZneXvbn2WoLebdZJ5TRCW8TdiLT+tpaeg2hwBH1y8uIyhQI3mdDydp2dYexiFi83bbADtxrOKBRxP12zrG7htUgaMZTxdeBMxDhv+MIbPxzDN0+B4iR6d0hKHTaH3cB7KARK+6mYhDG5vMhYzuodzWJoKLIDVRSQVVtZRs2Yx8bZKqNHcyGtfgEgMgwwlKWMW65fFscbEOcJMY1oEvv9vmKb8s3qI2mmVLYn6C63u6liX606t7vTyRjq21dXwJOPcNARJiAnwP4YPhROmK8g/9XTzHxBSP/EVUvbDRlgtKuqtxssf+RrosJk1LdpAHSTc= 
        EOT,
      - <<-EOT
            ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCXOa0wOsAV03DZ/IUlvGxROXOO6ugdFe3e+6y1yCJ7SuYe8WzJe20Fa/es8qV2e/CLoBEhUSimrjyS7bzY/NbdpBebGbHZRY87ols3JhnXNHjLC3RvBx0PoNd4wJUYwG0LNfdfSL6HYFXJfIVVi/bFgiJH9qiBAsZdHUEbuzVagQsaEQDdVOmdNy3vZ4A+Pz3wWLfIXctseFycl6Arrje73DQBzmCz/5qrtTES6YqGmjLQh9m0CIJRhlzKK5uyZ/OyGTLM3saybuPnQG2k57jBroko7bLZpbhNNx+jIE0PJTsi0uSYC2+3+V0sUhgaksAveN9XaUpHXm4XVa7IwH4EmMdViW2VNNashwkqp1M5p7B8Zy7U+CxtXc8ZhrTAYhTRefnSGK5gWslpBtQNFpA5p+Ius1enEGHfSmtP/LnnnzisylVgSUPLqKgYqMeWYiy5Q8fC2mR3Mr/T6PMnc4bfrOT6wzXsAOdqmkjtdJgZzOwjLmwKH4UPcsnM4e51kH8= 
        EOT,
    ] -> null
null_resource.ssh-keygen[1]: Destroying... [id=3802793460838414525]
null_resource.ssh-keygen[0]: Destroying... [id=65923644069703909]
null_resource.ssh-keygen[1]: Destruction complete after 0s
null_resource.ssh-keygen[0]: Destruction complete after 0s

Destroy complete! Resources: 2 destroyed.
$ ls id_rsa_*
id_rsa_node03  id_rsa_node03.pub  id_rsa_node04  id_rsa_node04.pub

local-execによるキー作成なので、destroyによってもキーファイルは削除されない。

再実行2

$ terraform apply --auto-approve 

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create
 <= read (data resources)

Terraform will perform the following actions:

  # data.local_file.ssh-keygen[0] will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "local_file" "ssh-keygen" {
      + content        = (known after apply)
      + content_base64 = (known after apply)
      + filename       = "./id_rsa_node03.pub"
      + id             = (known after apply)
    }

  # data.local_file.ssh-keygen[1] will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "local_file" "ssh-keygen" {
      + content        = (known after apply)
      + content_base64 = (known after apply)
      + filename       = "./id_rsa_node04.pub"
      + id             = (known after apply)
    }

  # null_resource.ssh-keygen[0] will be created
  + resource "null_resource" "ssh-keygen" {
      + id = (known after apply)
    }

  # null_resource.ssh-keygen[1] will be created
  + resource "null_resource" "ssh-keygen" {
      + id = (known after apply)
    }

Plan: 2 to add, 0 to change, 0 to destroy.

Changes to Outputs:
  + pub_keys = [
      + (known after apply),
      + (known after apply),
    ]
null_resource.ssh-keygen[0]: Creating...
null_resource.ssh-keygen[1]: Creating...
null_resource.ssh-keygen[0]: Provisioning with 'local-exec'...
null_resource.ssh-keygen[0] (local-exec): Executing: ["/bin/sh" "-c" "ssh-keygen -m PEM  -C '' -N '' -f ./id_rsa_node03; exit 0"]
null_resource.ssh-keygen[1]: Provisioning with 'local-exec'...
null_resource.ssh-keygen[1] (local-exec): Executing: ["/bin/sh" "-c" "ssh-keygen -m PEM  -C '' -N '' -f ./id_rsa_node04; exit 0"]
null_resource.ssh-keygen[0] (local-exec): Generating public/private rsa key pair.
null_resource.ssh-keygen[0] (local-exec): ./id_rsa_node03 already exists.
null_resource.ssh-keygen[0] (local-exec): Overwrite (y/n)?
null_resource.ssh-keygen[0]: Creation complete after 0s [id=2920462168810969721]
null_resource.ssh-keygen[1] (local-exec): Generating public/private rsa key pair.
null_resource.ssh-keygen[1] (local-exec): ./id_rsa_node04 already exists.
null_resource.ssh-keygen[1] (local-exec): Overwrite (y/n)?
null_resource.ssh-keygen[1]: Creation complete after 0s [id=5240140531633316223]
data.local_file.ssh-keygen[0]: Reading...
data.local_file.ssh-keygen[1]: Reading...
data.local_file.ssh-keygen[1]: Read complete after 0s [id=ea71dd91fbe9071a4ece7c3a41d5727b906e8792]
data.local_file.ssh-keygen[0]: Read complete after 0s [id=b08bc1103b1d8aa05f22be806d89df833d41503c]

Apply complete! Resources: 2 added, 0 changed, 0 destroyed.

Outputs:

pub_keys = [
  <<-EOT
  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDPY3dlM/S4EVCkVF7GgRyziJ4az/r2O0x5zP0IDRBaIgpjLqQQXaVE7BKzAOY9sS3DqeUT1KyfePP43ctEA2zmnoQVM1eI7w5XDRsxk9MrpvKanWnWOuq8gTj4/6HFOb3NTgZVte/hCM7XwxJmA6KVgAlk9axakmgC1OvPpFDZek+hBy4NpIP5UWGknSukQcZneXvbn2WoLebdZJ5TRCW8TdiLT+tpaeg2hwBH1y8uIyhQI3mdDydp2dYexiFi83bbADtxrOKBRxP12zrG7htUgaMZTxdeBMxDhv+MIbPxzDN0+B4iR6d0hKHTaH3cB7KARK+6mYhDG5vMhYzuodzWJoKLIDVRSQVVtZRs2Yx8bZKqNHcyGtfgEgMgwwlKWMW65fFscbEOcJMY1oEvv9vmKb8s3qI2mmVLYn6C63u6liX606t7vTyRjq21dXwJOPcNARJiAnwP4YPhROmK8g/9XTzHxBSP/EVUvbDRlgtKuqtxssf+RrosJk1LdpAHSTc= 
  
  EOT,
  <<-EOT
  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCXOa0wOsAV03DZ/IUlvGxROXOO6ugdFe3e+6y1yCJ7SuYe8WzJe20Fa/es8qV2e/CLoBEhUSimrjyS7bzY/NbdpBebGbHZRY87ols3JhnXNHjLC3RvBx0PoNd4wJUYwG0LNfdfSL6HYFXJfIVVi/bFgiJH9qiBAsZdHUEbuzVagQsaEQDdVOmdNy3vZ4A+Pz3wWLfIXctseFycl6Arrje73DQBzmCz/5qrtTES6YqGmjLQh9m0CIJRhlzKK5uyZ/OyGTLM3saybuPnQG2k57jBroko7bLZpbhNNx+jIE0PJTsi0uSYC2+3+V0sUhgaksAveN9XaUpHXm4XVa7IwH4EmMdViW2VNNashwkqp1M5p7B8Zy7U+CxtXc8ZhrTAYhTRefnSGK5gWslpBtQNFpA5p+Ius1enEGHfSmtP/LnnnzisylVgSUPLqKgYqMeWYiy5Q8fC2mR3Mr/T6PMnc4bfrOT6wzXsAOdqmkjtdJgZzOwjLmwKH4UPcsnM4e51kH8= 
  
  EOT,
]

ssh-keygenが再実行されるが、Overwrite (y/n)?にyで応答しないので、上書きされない。
そのため、再実行時にも同じキーが使用される。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?