EC2: varias claves ssh para una instancia?

12

¿Es posible crear más de una clave privada para SSH en una instancia EC2? ¿Cuál es la mejor práctica general para esto? Tenemos varios usuarios que necesitan SSH en los servidores y distribuir una clave simplemente no funciona bien. Esto no nos permite eliminar a los usuarios de SSH en el servidor a menos que cambiemos la clave y la redistribuyamos.

imaginativo
fuente
Cuando está haciendo la administración de claves SSH para un equipo, probablemente sea mejor mirar una herramienta especializada como Userify o SSH UKM (Descargo de responsabilidad: trabajo para Userify).
Jamieson Becker

Respuestas:

5

Absolutamente; simplemente colocas todas las claves públicas relevantes en la imagen y deberías estar en lo correcto. Prefiero usar un sistema de administración de configuración para administrar claves SSH; de esa manera es bastante trivial revocar el acceso de un usuario incluso en sistemas en ejecución. También hay muchas más ... digamos "imaginativas" ... formas de manejar esto, como almacenar todas sus claves SSH en LDAP, que centralizan las claves SSH como cualquier otra credencial.

womble
fuente
2
Cuando comience a querer almacenar claves SSH en LDAP, es hora de aprender sobre Kerberos.
84104
1
He desplegado Kerberos; personalmente, creo que es una solución en busca de un problema, y ​​una solución bastante fastidiosa y molesta.
womble
2
@ Ash: las preguntas van en preguntas, no en comentarios.
womble
1
Iba a ignorar el comentario anterior, pero para cualquier persona nueva en el sitio, sentí que debería dejar en claro que si tiene un comentario relacionado con la implementación de la respuesta dada, aclaraciones o malentendidos, esto debería aclararse en los comentarios, para que el OP pueda editar la respuesta para aclarar cualquier confusión que pueda ocurrir.
Mazateca
2
No, debe hacer preguntas aclaratorias en los comentarios si la respuesta no responde a la pregunta formulada originalmente. Si desea hacer una nueva pregunta basada en el contenido de una respuesta, debe usar el botón grande "Preguntar" en la esquina superior derecha de la página para hacer una nueva pregunta. Este es un sitio de preguntas y respuestas, no un foro de discusión.
womble
6

También podría usar mecanismos ssh estándar. El mejor enfoque sería si el usuario ejecutara en su máquina ssh-keygenpara generar su par de claves. Luego te envían ~/.ssh/id_rsa.pub(o id_dsa.pub, según el algoritmo elegido) y agregas su contenido al .ssh/authorized_keyshost de destino en el directorio de inicio de la cuenta de usuario a la que deberían poder acceder. Puede haber más de una clave en el archivo. Uno por línea. ¡Y eso es todo! La misma clave pública (id_rsa.pub) se puede utilizar en cualquier número de hosts; siempre identificará al usuario.

También puede hacerlo al revés: ejecuta ssh-keygen y publica ~ / .ssh / id_rsa (o id_dsa) para el usuario. Y el usuario guarda el archivo en ~ / .ssh / id_rsa. Solo necesita recordar cambiar los permisos a 600 (-rw -------) de ese archivo, de lo contrario ssh no lo aceptará. Obviamente, esto es menos seguro, ya que la clave privada se distribuye probablemente por correo electrónico.

También se puede hacer en PuTTY con PuTTYgen.

oker
fuente
1

Una forma más simple es como se muestra a continuación.

Para usuarios de Linux / Mac:

  1. Para crear claves públicas y privadas, use el siguiente comando: $ ssh-keygen -t rsa -b 4096

  2. Sube la clave pública a una carpeta en tu bucket de S3. Por ejemplo: S3> MyBucket> Keypair

  3. Guarde y asegure su clave privada.

Para usuarios de Windows:

  1. Use puttygen para generar las claves.
  2. Siga DigitalOcean para crear claves SSH.
  3. Cargue la clave pública en S3> MyBucket> Keypair
  4. Guarde y asegure su clave privada.

Los siguientes pasos son importantes durante el lanzamiento de cualquier AMI de Linux.

  1. Asegúrese de que el rol de IAM tenga un rol creado con la política AmazonS3FullAccess. Esto permite que la instancia asuma un rol para acceder a los depósitos de S3. Esto es necesario para leer las claves públicas de S3 y copiarlas en el perfil del usuario

  2. Agregue el siguiente código en la sección de datos del usuario en Configurar detalles de instancia> Detalles avanzados (como texto):

    #!/bin/bash
    usermod user 1
    usermod -aG wheel user1
    mkdir /home/user1/.ssh/
    aws s3 cp s3://MyBucket    /Keypair/user1-pub.pub /home/user1/.ssh/authorized_keys
    
    useradd user2
    usermod -aG wheel user2
    mkdir /home/user2/.ssh/
    aws s3 cp s3://MyBucket   /Keypair/user2-pub.pub /home/user2/.ssh/authorized_keys
    
    sudo -i 
    echo “user1 ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers
    echo “user2 ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers
    
    yum update -y
    

Esta configuración crea Usuario1 y Usuario2 y los agrega a los usuarios de sudo . El comando aws s3 cp copia las claves públicas de los usuarios de la carpeta S3 a su .ssh/authorized_keys path. La última sección es ejecutar comandos como administrador sin necesidad de contraseñas.

Hay muchas mejoras de seguridad que se pueden recomendar aquí. Si bien no se usa explícitamente en este ejemplo, limitar el acceso al depósito S3 a un depósito específico y conocer las implicaciones de seguridad de deshabilitar el uso de la contraseña en sudo, son algunas cosas que se pueden resaltar. Úselos sabiamente según sus necesidades particulares.

Vijay Shreenivos
fuente