问题陈述 - 创建额外的用户几乎与解释Here相同,只是我正在做的事情而不是生成新的密钥对我使用的是用于ec2-user的相同密钥对。 / p>
现在,如果我运行以下命令手动登录ec-2实例,它没有任何问题,我可以使用与测试用户相同的密钥ssh
sudo adduser test-user
sudo su - test-user
mkdir .ssh
chmod 700 .ssh
cd .ssh
curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key >> authorized_keys
chmod 600 authorized_keys
但是如果我在实例的用户数据部分中保持相同的指令以在启动时运行,那么它只创建测试用户但不执行其余步骤。我还没有在/var/log/cloud-init-output.log上找到很多细节
#!/bin/bash
sudo adduser test-user
sudo su - test-user
mkdir .ssh
chmod 700 .ssh
cd .ssh
curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key >> authorized_keys
chmod 600 authorized_keys
答案 0 :(得分:1)
首先,确保您的实例上安装了 cloud-init
sudo yum install cloud-init
停止实例(不终止)
使用以下脚本更新用户数据(确保将 <YOUR-PUBLIC-SSH-KEY>
替换为您的密钥(例如 ssh-rsa abc123...
)
#cloud-config
cloud_final_modules:
- [users-groups,always]
users:
- name: username
groups: [ wheel ]
sudo: [ "ALL=(ALL) NOPASSWD:ALL" ]
shell: /bin/bash
ssh-authorized-keys:
- <YOUR-PUBLIC-SSH-KEY>
启动您的实例
现在您应该能够以与 ec2-user 相同的方式登录。
此处的更多信息:https://aws.amazon.com/premiumsupport/knowledge-center/ec2-user-account-cloud-init-user-data/
答案 1 :(得分:0)
显然,作为用户数据输入的脚本以root用户身份执行,因此您创建的任何文件都将由root拥有。因此,您必须将.those文件的所有权更改为test-user。下面的命令最后需要执行。
chown -R test-user:test-user / home / test-user /