Добавление ключа ssh к экземпляру GCP с использованием terraform работает, но показывает ошибку на консоли - PullRequest
0 голосов
/ 31 мая 2019

Я добавляю ssh-ключи в мой экземпляр gce, используя это: ssh-keys = "$ {var.ssh_user_name}: $ {var.ssh_pub_key}"

ssh_pub_key - это выходная переменная открытого ключа модуля tls_private_key, которая динамически генерирует ssh-ключи.

В соответствии с форматом ssh-ключа GCP, в конце открытого ключа, имя пользователя должно быть добавлено, но генерация динамических ключей с использованием ресурса tls_private_key не добавит имя пользователя

После добавления ключей ssh ​​я могу войти в экземпляр gcp с помощью закрытого ключа, но если я пытаюсь редактировать в консоли gcp, я получаю следующую ошибку:

«Ключ SSH имеет неверный формат»

Это связано с тем, что имя пользователя не добавляется в конце. Моя проблема: ssh-keys = "$ {var.ssh_user_name}: $ {var.ssh_pub_key}"

Разве это не должно заботиться об этом? Есть ли другой способ сделать это? Если ssh-ключ действительно неправильный, тогда ssh даже не должен быть разрешен. Я искал все способы добавить ssh-ключ на уровне экземпляра в gcp через terraform, я не могу найти что-либо еще

ssh-keys = "$ {var.ssh_user_name}: $ {var.ssh_pub_key}"

У var.ssh_pub_key в конце есть дополнительный символ строки \ n, и я не могу изменить это выходная переменная модуля генерации ключей.

1 Ответ

1 голос
/ 31 мая 2019

Таким образом, имя пользователя требуется в открытом ключе, а не в частном. Так что насчет чего-то простого, например

"${var.ssh_user_name}:${var.ssh_pub_key} ${var.ssh_user_name}" - теперь при терраформной интерполяции ваш открытый ключ должен отображаться в правильном формате

Edit: Таким образом, решение для символа \ n в конце в чисто терраформе:

locals {
  ssh_pub_key_without_new_line = "${replace(var.ssh_pub_key, "\n", "")}"
}

А потом

"${var.ssh_user_name}:${local.ssh_pub_key_without_new_line} ${var.ssh_user_name}"

...