我正在使用以下命令将ssh-keys添加到我的gce实例中: ssh-keys =“ $ {var.ssh_user_name}:$ {var.ssh_pub_key}”
ssh_pub_key是tls_private_key模块的公共密钥输出变量,该模块动态生成ssh-key。
根据GCP ssh-key格式,应在公共密钥的末尾附加用户名,但使用tls_private_key资源生成动态密钥不会添加用户名
添加ssh-keys之后,我可以使用私钥登录到gcp实例,但是如果我尝试在gcp控制台上进行编辑,则会出现以下错误:
“ SSH密钥格式错误”
这是由于没有在末尾添加用户名。 我的问题是: ssh-keys =“ $ {var.ssh_user_name}:$ {var.ssh_pub_key}”
这不是应该照顾吗?还有另一种方法吗?如果ssh-key确实是错误的,那么甚至都不应该使用ssh。我已经搜索了所有通过terraform在gcp实例级别添加ssh-key的方法,我找不到其他东西
ssh-keys =“ $ {var.ssh_user_name}:$ {var.ssh_pub_key}”
var.ssh_pub_key在末尾有额外的\ n行字符,我无法修改,这是密钥生成模块的输出变量。
答案 0 :(得分: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}"