我使用以下方法将ssh-键添加到我的gce实例中:
ssh-keys = "${var.ssh_user_name}:${var.ssh_pub_key}"ssh_pub_key是动态生成ssh-键的tls_private_key模块的公钥输出变量.
根据GCP ssh-key格式,在公钥的末尾,应该附加用户名,但是使用tls_private_key资源生成动态密钥不会添加用户名。
在添加ssh-键之后,我可以使用私钥登录到gcp实例,但是如果我尝试在gcp控制台上编辑,则会得到以下错误:
“SSH键格式错误”
这是因为最后没有添加用户名。
我的问题是:
ssh-keys = "${var.ssh_user_name}:${var.ssh_pub_key}"这不是应该处理的吗?还有别的办法吗?如果ssh键真的错了,那么ssh甚至不应该被允许。我已经通过terraform搜索了在GCP中在实例级别添加ssh-key的所有方法,我找不到任何其他的方法。
ssh-keys = "${var.ssh_user_name}:${var.ssh_pub_key}"var.ssh_pub_key在末尾有额外的\n行字符,我不能修改这是密钥生成模块的输出变量。
发布于 2019-05-31 07:16:52
因此,用户名需要公开密钥,而不是私密的。那么一些简单的东西呢?
"${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}"
https://stackoverflow.com/questions/56389912
复制相似问题