Preciso adicionar outra conta de usuário que possa se conectar à minha instância Linux do Amazon Elastic Compute Cloud (Amazon EC2) via SSH. Como posso usar o cloud-init e dados do usuário para fazer isso?
Breve descrição
Passe um script de dados do usuário para cloud-init que executa o seguinte:
1.Cria um novo usuário.
2.Define a propriedade e as permissões de arquivo apropriadas para o diretório SSH e os arquivos nele contidos.
3.Anexa a chave pública SSH ao arquivo authorized_keys.
Resolução
Antes de começar, observe o seguinte:
1.Conecte-se à instância do EC2 usando SSH.
2.Execute o comando a seguir para confirmar se o cloud-init está instalado:
sudo yum list installed cloud-init
Se o cloud-init não estiver instalado, execute o seguinte comando para instalá-lo:
sudo yum install cloud-init
3.Abra o console do Amazon EC2 e, em seguida, selecione a instância.
4.Escolha Ações, selecione Estado da instância e depois escolha Interromper.
Observação: se a opção Parar não estiver disponível, significa que a instância já está parada ou seu dispositivo raiz é um volume de armazenamento de instância.
5.Recupere a chave pública do par de chaves.
Observação: você deve ter um par de chaves ou uma chave privada para recuperar uma chave pública. Para criar um par de chaves, consulte Criar um par de chaves usando o Amazon EC2. Para segurança SSH, é uma prática recomendada criar pares de chaves por meio do console do EC2 ou de uma ferramenta de terceiros.
6.Escolha Ações, selecione Configurações da instância e, em seguida, escolha Visualizar/alterar dados do usuário.
7.Copie e cole o script de exemplo a seguir no campo Dados do usuário. Em nome de usuário, insira o nome do novo usuário. Para ssh-rsa AB3nzExample, insira sua chave pública:
#cloud-config
cloud_final_modules:
- [users-groups,always]
users:
- name: username
groups: [ wheel ]
sudo:
- "ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart httpd"
- "ALL=(ALL) NOPASSWD: /usr/bin/cp /home/username/webserver_configuration.conf /etc/httpd/conf.d/"
shell: /bin/bash
ssh-authorized-keys:
- ssh-rsa AB3nzExample
Esse exemplo de script permite que o novo usuário execute somente as seguintes ações raiz:
- Copiar o arquivo /home/username/webserver_configuration.conf para /etc/httpd/conf.d/
- Reiniciar o serviço do servidor Web
Para conceder ao usuário acesso total ao EC2, substitua o campo sudo por sudo: [ “ALL=(ALL) NOPASSWD:ALL” ].
Observação: por padrão, as diretivas do cloud-init são executadas somente quando uma instância é iniciada. No entanto, quando você usa esse script de dados do usuário, o cloud-init adiciona a chave pública à instância toda vez que a instância é reinicializada ou reiniciada. Se você remover o script de dados do usuário, a funcionalidade padrão será restaurada.
8.Escolha Salvar.
9.Escolha Ações, selecione Estado da instância e escolha Iniciar.
10.Quando a instância atingir o estado de execução, faça login como o novo usuário. O novo usuário tem o mesmo comportamento padrão do ec2-user.
Observação: a modificação dos dados do usuário de uma instância usa a ação da API ModifyInstanceAttribute. Você pode criar uma política do AWS Identity and Access Management (IAM) para restringir essa ação.
Informações relacionadas
Exibir o par de chaves
Como adiciono novas contas de usuário com acesso do SSH a instâncias do Amazon EC2 do Linux?