Como adicionar novas contas de usuário com acesso SSH à minha instância do EC2 usando dados do usuário e o cloud-init?
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:
- Interromper e reiniciar a instância apaga todos os dados nos volumes de armazenamento da instância. Certifique-se de fazer backup de todos os volumes de armazenamento de instância que contêm dados que você deseja manter. Para mais informações, consulte Determinar o tipo de dispositivo raiz da AMI.
- Interromper e reiniciar a instância altera o endereço IP público da sua instância. Recomenda-se usar um endereço IP elástico em vez de um endereço IP público ao direcionar tráfego externo para a instância.
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
Como adiciono novas contas de usuário com acesso do SSH a instâncias do Amazon EC2 do Linux?
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há 8 meses
- AWS OFICIALAtualizada há 2 anos
- Como soluciono problemas de acesso à minha instância do EC2 usando uma conexão SSH via bastion host?AWS OFICIALAtualizada há 3 anos