Установка файла author_keys под пользовательским пользователем для Ubuntu AWS
Я пытаюсь настроить сервер Ubuntu и войти в систему с пользователем не по умолчанию. Я использовал cloud-config с пользовательскими данными для настройки первоначального пользователя и упаковщика для предоставления сервера:
system_info:
default_user:
name: my_user
shell: /bin/bash
home: /home/my_user
sudo: ['ALL=(ALL) NOPASSWD:ALL']
Упаковщик входит в систему и подготавливает сервер как my_user, но когда я запускаю экземпляр из AMI, AWS устанавливает файлы author_keys в /home/ubuntu/.ssh/
Конфигурация упаковщика:
{
"variables": {
"aws_profile": ""
},
"builders": [{
"type": "amazon-ebs",
"profile": "{{user `aws_profile`}}",
"region": "eu-west-1",
"instance_type": "c5.large",
"source_ami_filter": {
"most_recent": true,
"owners": ["099720109477"],
"filters": {
"name": "*ubuntu-xenial-16.04-amd64-server-*",
"virtualization-type": "hvm",
"root-device-type": "ebs"
}
},
"ami_name": "my_ami_{{timestamp}}",
"ssh_username": "my_user",
"user_data_file": "cloud-config"
}],
"provisioners": [{
"type": "shell",
"pause_before": "10s",
"inline": [
"echo 'run some commands'"
]}
]
}
После запуска сервера пользователи / ubuntu и my_user существуют в /etc/passwd:
my_user:1000:1002:Ubuntu:/home/my_user:/bin/bash
ubuntu:x:1001:1003:Ubuntu:/home/ubuntu:/bin/bash
В какой момент создается пользователь Ubuntu, и есть ли способ установить файл author_keys в /home/my_user/.ssh при запуске вместо Ubuntu?
2 ответа
Чтобы сохранить пользователя по умолчанию при использовании AMI для запуска с него новых экземпляров EC2, необходимо изменить значение /etc/cloud/cloud.cfg
и обновите эту часть:
system_info:
default_user:
# Update this!
name: ubuntu
Вы можете добавить свои открытые ключи, когда создаете пользователя с помощью cloud-init. Вот как ты это делаешь.
users:
- name: <username>
groups: [ wheel ]
sudo: [ "ALL=(ALL) NOPASSWD:ALL" ]
shell: /bin/bash
ssh-authorized-keys:
- ssh-rsa AAAAB3Nz<your public key>...
Добавление дополнительной учетной записи пользователя SSH с помощью cloud-init