Tengo una instancia de Linux ec2 en ejecución asociada con un par de claves (p1) y he descargado la clave privada en el escritorio de mi casa. Ahora en el trabajo, creé un par de claves (p2) en mi escritorio de trabajo e importé la clave pública a Amazon a través de la consola de AWS.
En casa, quiero agregar la clave pública de keypair p2 que se agregará a authorized_keys
mi instancia de AMI (a la que actualmente solo puedo acceder desde mi casa). Sin embargo, olvidé traer la clave pública de p2 conmigo, por lo que es posible exportar de alguna manera esta clave pública desde Amazon.
Sin embargo, el comando ssh-keygen correcto es:
fuente
chmod 400 your_private_key.pem
si obtiene "Error de permisos demasiado abiertos"Ya proporcioné una respuesta que usa volúmenes EBS para obtener la clave pública ssh, pero aquí hay otra forma de obtenerla iniciando una instancia EC2 temporal con un script de datos de usuario que envía la clave pública a la salida de la consola. Aquí están los pasos:
Guarde el siguiente código en un archivo nombrado
output-ssh-key.userdata
en su computadora local. ¡NO EJECUTE ESTOS MANDOS LOCALMENTE!Ejecute una instancia de Ubuntu 10.04 LTS con el archivo anterior como un script de datos de usuario. Especifique el par de claves para el que desea recuperar la clave ssh pública:
Siga solicitando la salida de la consola de la instancia hasta que muestre su clave ssh pública. Especifique el id de instancia devuelto por el comando run-Instances:
Dentro de 2-10 minutos obtendrá una salida como esta:
La instancia temporal terminará automáticamente en menos de una hora, pero puede terminarla usted mismo si desea asegurarse de que no se le cobre más de los dos centavos que costará ejecutarla.
fuente
Si tiene la clave SSH privada, puede volver a generar el componente de clave pública simplemente ejecutando el siguiente comando ssh-keygen :
Esa es la parte simple ... La consola y la API de AWS no admiten empujar 2 pares de teclas al iniciar una instancia de EC2. Este es un ejercicio que el administrador del sistema debe realizar por otros medios.
Si tiene acceso a la clave de identidad ya autorizada, simplemente puede ejecutar el siguiente comando ssh-copy-id :
Esto copiará la clave pública dada al servidor y al
~user/.ssh/authorized_keys
archivo automáticamente para usted y garantizará los permisos adecuados en el archivo.La forma más elegante sería incluir las claves de identidad adicionales en sus procesos de gestión de configuración. En mi caso, esto implica agregar las teclas adicionales a la marioneta configuración de para el nodo.
Como nota al margen, la preferencia personal, pero utilizaría un mejor método de administración de claves SSH que simplemente tener que incluir claves separadas para el trabajo y la ubicación del hogar. Como mencioné en una pregunta anterior , mantengo mis llaves en una unidad USB que guardo conmigo en lugar de en cualquier computadora que utilizo.
fuente
Otra opción sería agregar un script corto en user_data que simplemente agregue otra clave ssh a la raíz:
Luego, puede iniciar sesión en la máquina como root
ssh -l root -i <KEYFILE> URL
y simplemente leer la clave de las claves autorizadas del usuario ec2_user, ubuntu o como se llame.Lo único es que debe hacer que la máquina sea públicamente accesible y asegurarse de que el acceso al puerto 22 sea posible desde el exterior.
fuente