¿Cómo puedo añadir nuevas cuentas de usuario con acceso SSH a mi instancia de EC2 mediante cloud-init y los datos de usuario?

4 minutos de lectura
0

Tengo que añadir otro usuario que pueda conectarse a mi instancia de Linux de Amazon Elastic Compute Cloud (Amazon EC2) mediante SSH. ¿Cómo puedo usar cloud-init y los datos de usuario para ello?

Breve descripción

Envíe un script de datos de usuario a cloud-init que haga lo siguiente:

1.    Crear un nuevo usuario.

2.    Establecer la propiedad y los permisos de archivo apropiados para el directorio de SSH y los archivos que contenga.

3.    Añadir la clave pública SSH al archivo authorized_keys.

Solución

Antes de empezar, tenga en cuenta lo siguiente:

1.    Conéctese a su instancia de EC2 mediante SSH.

2.    Ejecute el siguiente comando para confirmar que se haya instalado cloud-init:

sudo yum list installed cloud-init

Si no se ha instalado cloud-init, ejecute el siguiente comando para instalarlo:

sudo yum install cloud-init

3.    Abra la consola de Amazon EC2 y, a continuación, seleccione la instancia.

4.    Elija Acciones, Estado de instancia y, a continuación, Detener.

Nota: Si Detener no está disponible, significa que la instancia ya está detenida o que el dispositivo raíz es un volumen de almacén de instancias.

5.    Recupere la clave pública del par de claves.

Nota: Debe tener un par de claves o una clave privada para recuperar una clave pública. Para crear un par de claves, consulte Crear un par de claves mediante Amazon EC2. Para garantizar la seguridad de SSH, se recomienda crear pares de claves mediante la consola de EC2 o una herramienta de terceros.

6.    Elija Acciones, seleccione Configuración de la instancia y, a continuación, elija Ver o modificar datos del usuario.

7.    Copie y pegue el siguiente script de ejemplo en el campo Datos de usuario. En username, introduzca el nombre del nuevo usuario. En ssh-rsa AB3nzExample, introduzca su clave 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

El script de este ejemplo solo permite que el nuevo usuario realice las siguientes acciones raíz:

  • Copia del archivo /home/username/webserver_configuration.conf en /etc/httpd/conf.d/
  • Reinicio del servicio de servidor web

Para conceder al usuario acceso total a EC2, sustituya el campo sudo por sudo: [ "ALL=(ALL) NOPASSWD:ALL" ].

Nota: De forma predeterminada, las directivas cloud-init solo se ejecutan cuando se lanza una instancia. Sin embargo, cuando usa este script de datos de usuario, cloud-init añade la clave pública a la instancia cada vez que la instancia se reinicia o arranca de nuevo. Si elimina el script de datos de usuario, se restaurará la funcionalidad predeterminada.

8.    Seleccione Guardar.

9.    Elija Acciones, Estado de instancia y, a continuación, Iniciar.

10.    Cuando la instancia alcance el estado En ejecución, inicie sesión como el nuevo usuario. El nuevo usuario tiene el mismo comportamiento predeterminado que ec2-user.

Nota: Para modificar los datos de usuario de una instancia se utiliza la acción de API ModifyInstanceAttribute. Puede crear una política de AWS Identity and Access Management (IAM) para restringir esta acción.


Información relacionada

Display your key pair

¿Cómo agrego nuevas cuentas de usuario con acceso SSH a mi instancia Amazon EC2 de Linux?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años