首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用terraform将ssh键添加到GCP实例,但在控制台上显示错误。

使用terraform将ssh键添加到GCP实例,但在控制台上显示错误。
EN

Stack Overflow用户
提问于 2019-05-31 06:38:54
回答 1查看 2.3K关注 0票数 1

我使用以下方法将ssh-键添加到我的gce实例中:

代码语言:javascript
复制
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键格式错误”

这是因为最后没有添加用户名。

我的问题是:

代码语言:javascript
复制
ssh-keys  = "${var.ssh_user_name}:${var.ssh_pub_key}"

这不是应该处理的吗?还有别的办法吗?如果ssh键真的错了,那么ssh甚至不应该被允许。我已经通过terraform搜索了在GCP中在实例级别添加ssh-key的所有方法,我找不到任何其他的方法。

代码语言:javascript
复制
ssh-keys  = "${var.ssh_user_name}:${var.ssh_pub_key}"

var.ssh_pub_key在末尾有额外的\n行字符,我不能修改这是密钥生成模块的输出变量。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-31 07:16:52

因此,用户名需要公开密钥,而不是私密的。那么一些简单的东西呢?

"${var.ssh_user_name}:${var.ssh_pub_key} ${var.ssh_user_name}" -现在的地形插值应该使您的公钥以适当的格式。

编辑:所以在纯粹的terraform中\n字符的解决方案是:

代码语言:javascript
复制
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}"

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56389912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档