Estoy intentando realizar SSH desde una gota de Digital Ocean a una segunda gota.
He aquí mi arreglo:
Instalación y configuración
- Gota 1: Mi prueba (Ubuntu 16.04 512 MB de RAM)
- Gota 2: RemoteHost (Ubuntu 16.04 512 MB de RAM)
- Sistema local (Windows 7 con Putty, PuttyGen)
Basado en las instrucciones del vídeo.aquí, utilicé PuttyGen para generar un par de claves públicas y privadas en mi sistema local (Windows 7). No guardé la clave pública. Guardé la clave privada en mi sistema local (Windows 7). Agregué la clave pública al droplet MyTest. Ahora puedo usar Putty para enviar ssh desde mi sistema local (Windows 7) a MyTest sin contraseña, exactamente como se muestra en el video.
Problema
Ahora, me gustaría realizar SSH desde el droplet MyTest al droplet RemoteHost.
Paso 1.
Creé el droplet RemoteHost y adjunté la misma clave pública que para MyTest. Entonces, ambas gotas MyTest y RemoteHost tienen la misma clave pública.
Paso 2.
Desde mi máquina local (Winsows 7), utilicé PuTTy para SSH en el droplet MyTest.
Paso 3.
Luego, (desde la línea de comando del droplet MyTest) intenté realizar SSH en el droplet RemoteHost con lo siguiente:
root@MyTest:~# ssh [email protected]
Después de esto, aparece el siguiente mensaje de error
root@MyTest:~# ssh root@xxx
The authenticity of host 'xxx (xxx)' can't be established.
ECDSA key fingerprint is SHA256:yyy.
Are you sure you want to continue connecting (yes/no)?
También muestro el error en la captura de pantalla anterior.
Pregunta:
¿Es posible realizar SSH desde una gota de Digital Ocean a otra gota de Digital Ocean diferente?
Respuesta1
Sí, pero debe colocar una copia de su clave privada en MyTest. El cliente SSH en MyTest no puede leer su clave privada en su PC.
Dicho esto, realmente debería usar un par de claves diferente para conectarse desde MyTest a RemoteHost porque la clave privada que ingresa en MyTest puede ser copiada por cualquier persona que tenga acceso a ese sistema (personas con las que comparte el servidor, tal vez personal de DO... .) y se utiliza para acceder a otros sistemas a los que accede con esa clave. Entonces, en MyTest, genere un segundo par de claves y copie su clave pública en RemoteHost (que tendrá dos claves públicas, la de su par de PC y la del par MyTest). Luego puede conectarse a RemoteHost directamente desde su PC (usando su clave privada local) o desde MyTest (usando la clave privada MyTest).
Respuesta2
¡La respuesta de @xenoid funcionó! Elegí usar un par de claves pública-privada diferente para conectarmeMi pruebaaServidor remoto.
Esto es lo que tuve que hacer (enfoque manual usando estas fuentes -aquíy el paso 4 deaquí) para seguir la sugerencia de @xenoid:
En la primera gota (MiPrueba)
1.
root@MyTest:~# ssh-keygen -t rsa -N '' -f keyfilename.rsa
root@MyTest:~# cat ~/keyfilename.rsa.pub
la primera lineagenera un par de claves sin contraseña. La segunda línea muestra el contenido del archivo de clave PÚBLICA.
2. Seleccione todos los caracteres en el archivo de clave PÚBLICA (usando el cursor del mouse) y presione Ctrl+ Cpara copiar la clave PÚBLICA.
3.
root@MyTest:~# exit
En la segunda gota (RemoteHost)
1.
root@RemoteHost:~# chmod 700 ~/.ssh
root@RemoteHost:~# chmod 600 ~/.ssh/authorized_keys
root@RemoteHost:~# nano ~/.ssh/authorized_keys
Este archivo ya contiene la clave PÚBLICA del par público-privado generado desde mi máquina local y agregado al droplet cuando se creó.
2. Utilice elnanoeditorpara pegar la clave PÚBLICA. Presione Enterpara comenzar una nueva línea en este archivo.
3. Presione Ctrl+ Vpara pegar la clave PRIVADA
4. Presione Ctrl+ X, y, Enterpara guardar y salir con el mismo nombre de archivo.
5.
root@RemoteHost:~# exit
En el cliente Ubuntu (AnsibleFlex)
1.
root@MyTest:~# ssh [email protected] -i ~/keyfilename.rsa
¿Dónde 123.456.789.10
está la dirección IP pública delServidor remoto. Esto abre el indicador SSH en el /root
directorio enServidor remoto, según sea necesario.
¡Gracias @xenoid!