amazon-web-services - terraform:使用给定的公钥添加操作系统用户
问题描述
我使用 terraform 在 AWS 上创建了一个 EC2 实例;
我想要的是在操作系统级别添加一个用户并提供一个要添加到其~/.ssh/authorized_keys
文件中的特定密钥。
该aws_instance
文档似乎没有列出此功能。
有没有办法解决这个问题?
编辑:我认为一种方法是通过remote-exec
供应商,但由于我已经创建了我的 ec2 资源,我需要一种强制运行它的方法;
解决方案
跟进评论和编辑,您正在寻找的内容可能如下所示:
resource "aws_instance" "default" {
...
provisioner "remote-exec" {
inline = [
"sudo useradd someuser"
]
connection {
type = "ssh"
user = "ubuntu"
private_key = "${file("yourkey.pem")}"
}
}
provisioner "file" {
source = "authorized_keys"
destination = "/home/someuser/.ssh/authorized_keys"
connection {
type = "ssh"
user = "ubuntu"
private_key = "${file("yourkey.pem")}"
}
}
provisioner "remote-exec" {
inline = [
"sudo chown someuser:someuser /home/someuser/.ssh/authorized_keys",
"sudo chmod 0600 /home/someuser/.ssh/authorized_keys"
]
connection {
type = "ssh"
user = "ubuntu"
private_key = "${file("yourkey.pem")}"
}
}
...
}
- 创建用户
- 上传您的授权密钥文件
- 为用户设置文件的适当权限
您也可以remote-exec
根据您要如何处理设置authorized_keys
文件来一次性完成所有操作
推荐阅读
- c++ - C++ Boost:在 Windows 中未定义对 boost::system::generic_category() 的引用
- javascript - 来自静态文件夹的 vue.js javascript 文件
- android - 使用 Intent.FLAG_ACTIVITY_SINGLE_TOP 和 CLEAR_TOP 时未通过附加功能
- android - 更改应用程序方向不在主要活动上
- node.js - 错误:expected_inputs[0].input_prompt.rich_initial_prompt: 'item[1]' 不能为空
- reactjs - 可重用反应组件中的道具类
- python - 查找具有某个字符的 N 个非连续实例的单词?
- python - /cart 处的 NoReverseMatch
- c - 我的模拟没有运行或循环
- java - 设计咨询:从多个类调用方法