Google cloud platform 使用terraform将ssh密钥添加到GCP实例可以工作,但在控制台上显示错误

Google cloud platform 使用terraform将ssh密钥添加到GCP实例可以工作,但在控制台上显示错误,google-cloud-platform,terraform,Google Cloud Platform,Terraform,我正在使用以下方法将ssh密钥添加到我的gce实例: ssh-keys = "${var.ssh_user_name}:${var.ssh_pub_key}" ssh_pub_key是tls_private_key模块的公钥输出变量,该模块动态生成ssh密钥 根据GCP ssh密钥格式,在公钥的末尾,应该附加用户名,但是使用tls\u private\u key资源生成动态密钥不会添加用户名 添加ssh密钥后,我可以使用私钥登录到gcp实例,但如果我尝试在gcp控制台上进行编辑,则会出现以下

我正在使用以下方法将ssh密钥添加到我的gce实例:

ssh-keys  = "${var.ssh_user_name}:${var.ssh_pub_key}"
ssh_pub_key是tls_private_key模块的公钥输出变量,该模块动态生成ssh密钥

根据GCP ssh密钥格式,在公钥的末尾,应该附加用户名,但是使用
tls\u private\u key
资源生成动态密钥不会添加用户名

添加ssh密钥后,我可以使用私钥登录到gcp实例,但如果我尝试在gcp控制台上进行编辑,则会出现以下错误:

“SSH密钥的格式错误”

这是因为没有在末尾添加用户名
我的问题是:

ssh-keys  = "${var.ssh_user_name}:${var.ssh_pub_key}"
这不应该处理好吗?还有别的办法吗?如果ssh密钥真的错了,那么就不应该允许ssh。我已经通过terraform搜索了所有在GCP实例级别添加ssh密钥的方法,但我找不到任何其他方法

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

var.ssh_pub_key的末尾有额外的
\n
行字符,我无法修改这是key generation module的输出变量。

因此公钥中需要用户名,而不是私钥。那么像这样简单的事情呢

“${var.ssh\u user\u name}:${var.ssh\u pub\u key}${var.ssh\u user\u name}”
-现在terraform插值应该以正确的格式生成公钥

编辑: 因此,纯地形中\n字符结尾的解决方案是:

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


“${var.ssh\u user\u name}:${local.ssh\u pub\u key\u而不使用\u new\u line}${var.ssh\u user\u name}”

是的,我尝试过,但问题是tls\u private\u key的输出,public\u key\u openssh有额外的\n行字符,因此在下一行中添加了用户名I modified answer以解决该问题-如果它确实解决了您的问题,如果您能接受,我将不胜感激:)