Como adicionar novas contas de usuário com acesso SSH à minha instância do EC2 usando dados do usuário e o cloud-init?

4 minuto de leitura
0

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?

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos