Добавление ключа ssh к экземпляру GCP с помощью terraform работает, но в консоли отображается ошибка

Я добавляю 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-keys я могу войти в экземпляр gcp, используя закрытый ключ, но если я попытаюсь отредактировать в консоли gcp, я получу следующую ошибку:

"The SSH key is in the wrong format"

Это связано с тем, что имя пользователя не добавляется в конце
Моя проблема:

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, и я не могу изменить это выходную переменную модуля генерации ключей.

Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
1
0
1 795
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Редактировать: Таким образом, решение для символа \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}"

Да, я пытался это сделать, но проблема в том, что вывод tls_private_key, public_key_openssh имеет дополнительный символ строки \n, поэтому имя пользователя добавляется в следующей строке.

Abhilasha 31.05.2019 09:25

Я изменил ответ, чтобы решить и эту проблему. Буду признателен, если вы примете его, если он действительно решит вашу проблему :)

Jakub Bujny 31.05.2019 09:35

@JakubBujny привет, не могли бы вы рассказать мне, как я могу подключиться по ssh к моей машине gcp, используя terraform, чтобы запустить скрипт, с помощью которого я пытался сгенерировать ключ (как открытый, так и закрытый), и указать путь к ресурсу, но используя это, я не буду выполнять свой скрипт не могли бы вы сказать мне, как я могу бежать

user15224751 01.07.2021 16:03

Другие вопросы по теме