我正在尝试在EC2实例上创建本地用户,并传递公钥以启用SSH。当我通过cloudformation模板或从控制台(在User-Date中传递脚本)进行操作时,此操作无效。
但是当实例启动后在腻子上使用它时,它会起作用。
CLoudFormation模板(不创建用户)-
"UserData" : {
"Fn::Base64" : {
"Fn::Join" : [
"", [
"#!/bin/bash\n",
"adduser webadm\n",
"su - webadm\n",
"mkdir .ssh\n",
"chmod 700 .ssh\n",
"cd .ssh\n",
"touch authorized_keys\n",
"chmod 600 authorized_keys\n",
"curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > authorized_keys\n"
]
]
}
}
}
通过控制台执行操作(不创建用户)-
#!/bin/bash
adduser webadm
su - webadm
mkdir .ssh
chmod 700 .ssh
cd .ssh
touch authorized_keys
chmod 600 authorized_keys
curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > authorized_keys
同样,该脚本在实例启动后从腻子执行时有效。不确定,是否可以在使用cloudformation或控制台启动实例时完成。
答案 0 :(得分:0)
如果有人在寻找解决方案,就在这里。
"UserData" : {
"Fn::Base64" : {
"Fn::Join" : [
"", [
"#!/bin/bash\n",
"adduser webadm\n",
"su - webadm\n",
"/bin/mkdir /home/webadm/.ssh\n",
"chmod 700 .ssh\n",
"cd .ssh\n",
"/bin/touch /home/webadm/.ssh/authorized_keys\n",
"chmod 600 authorized_keys\n",
"curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /home/webadm/.ssh/authorized_keys\n"
]
]
}
像魅力一样工作。