在AWS EC2镜像构建器中,当使用Packer创建自定义安装包时,会遇到创建用户时无法生成authorized_keys文件的问题。在用户数据中使用的bash脚本无法找到默认SSH密钥对。解决方法是在用户数据中添加生成SSH密钥对的脚本。
步骤如下:
例如:
cat /dev/zero | ssh-keygen -q -N "" > /dev/null
mkdir -p /home/ec2-user/.ssh
cat /root/.ssh/id_rsa.pub >> /home/ec2-user/.ssh/authorized_keys
chmod 600 /home/ec2-user/.ssh/authorized_keys
chown -R ec2-user:ec2-user /home/ec2-user/.ssh
例如:
"provisioners": [
{
"type": "shell",
"inline": [
"sudo useradd -m -s /bin/bash ec2-user",
"echo 'ec2-user:' | sudo chpasswd -e",
"sudo usermod -aG wheel ec2-user"
]
}
],
"user_data": "#!/bin/bash\n"
将
替换为新的SSH密钥对脚本。
运行Packer进行自定义AMI的构建。
在EC2实例中使用新的AMI启动实例,并使用新的SSH密钥对连接到该实例。
确认/home/ec2-user/.ssh/authorized_keys
文件已经正确生成。