Solución:
Solución 1:
Sin embargo, el comando ssh-keygen correcto es:
ssh-keygen -y -f /path/to/privatekey > /path/to/publickey
Solucion 2:
Buen rompecabezas, gracias! Aquí hay una respuesta:
-
Inicie una nueva instancia A de arranque temporal de EBS t1.micro, especificando el par de claves p2. Especifique una zona de disponibilidad en la que ya tenga otra instancia B en ejecución y a la que tenga acceso. (Inicie uno temporal si es necesario).
-
Detenga (no termine) la instancia A después de que haya estado en el estado de ejecución durante unos minutos, para que tenga la oportunidad de guardar la clave pública en su archivo Authorized_keys.
-
Desconecte el volumen de EBS raíz de la instancia detenida A. Conéctelo y móntelo en su instancia en ejecución B.
-
Copie la clave pública del sistema de archivos montado.
-
Separe y elimine el volumen de EBS. Termine la instancia temporal A.
Solución 3:
Ya proporcioné una respuesta que usa volúmenes de EBS para obtener la clave pública ssh, pero aquí hay otra forma en que puede hacerlo 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. Estos son los pasos:
Guarde el siguiente código en un archivo llamado output-ssh-key.userdata
en su computadora local. ¡NO EJECUTE ESTOS COMANDOS LOCALMENTE!
#!/bin/bash -ex
exec> >(tee /var/log/user-data.log|logger -t user -s 2>/dev/console) 2>&1
adminkey=$(GET instance-data/latest/meta-data/public-keys/ |
perl -ne 'print $1 if /^0=[^a-z0-9]*([[email protected]w]*)/i')
cat <<EOF
SSHKEY:========================================================================
SSHKEY:HERE IS YOUR PUBLIC SSH KEY FOR KEYPAIR "$adminkey":
SSHKEY:$(cat /home/ubuntu/.ssh/authorized_keys)
SSHKEY:========================================================================
SSHKEY:Halting in 50min ($(date --date="+50 minutes" +"%Y-%m-%d %H:%M UTC"))
EOF
sleep 3000
halt
Ejecute una instancia común 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:
ec2-run-instances
--key YOURKEYPAIRHERE
--instance-type t1.micro
--instance-initiated-shutdown-behavior terminate
--user-data-file output-ssh-key.userdata
ami-ab36fbc2
Sigue solicitando el resultado de la consola de la instancia hasta que muestre tu clave ssh pública. Especifique el ID de instancia devuelto por el comando run-instances:
ec2-get-console-output YOURINSTANCEID | grep SSHKEY: | cut -f3- -d:
Dentro de 2 a 10 minutos obtendrá un resultado como este:
========================================================================
HERE IS YOUR PUBLIC SSH KEY FOR KEYPAIR "erich":
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6rn8cl41CkzaH4ZBhczOJZaR4xBBDI1Kelc2ivzVvCB
THcdJRWpDd5I5hY5W9qke9Tm4fH3KaUVndlcP0ORGvS3PAL4lTpkS4D4goMEFrwMO8BG0NoE8sf2U/7g
aUkdcrDC7jzKYdwleRCI3uibNXiSdeG6RotClAAp7pMflDVp5WjjECDZ+8Jzs2wasdTwQYPhiWSiNcfb
fS97QdtROf0AcoPWElZAgmabaDFBlvvzcqxQRjNp/zbpkFHZBSKp+Sm4+WsRuLu6TDe9lb2Ps0xvBp1F
THlJRUVKP2yeZbVioKnOsXcjLfoJ9TEL7EMnPYinBMIE3kAYw3FzZZFeX3Q== erich
========================================================================
Halting in 50min (2011-12-20 05:58 UTC)
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.
Solución 4:
Si tiene la clave SSH privada, puede volver a generar el componente de clave pública simplemente ejecutando el siguiente comando ssh-keygen:
ssh-keygen -i -f /path/to/private-key > /path/to/public-key
Esa es la parte simple … La consola y la API de AWS no admiten la inserción de 2 pares de claves al iniciar una instancia EC2. Este es un ejercicio que le queda al administrador del sistema por otros medios.
Si tiene acceso a la clave de identidad ya autorizada, simplemente puede ejecutar el siguiente comando ssh-copy-id:
ssh-copy-id -i /path/to/public-key [email protected]
Esto copiará la clave pública dada en el servidor y en el ~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 la configuración. En mi caso, esto implica agregar las claves adicionales a la configuración de Puppet para el nodo.
Como nota al margen, 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 utilice.