viernes, 6 de enero de 2017

conectarse con un server por ssh usando una llave ida/rsa

ACTUALIZACION 21:11:2018
Si hemos perdido la clave publica, pero conservamos la privada. Podemos "recrearla" con el comando:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub 

ACTUALIZACION 14:11:2018

Cuando creamos el par de claves, ssh-keygen nos va a mostrar una salida artistica de la llave que se llama randomart. 

Este dibujito, no lo volveremos a ver nunca mas si no lo deseamos específicamente. Una opción sería, habilitar la visualizacion de la llave cuando nos conectamos por ssh con un servidor con la opcion adicional, de forma que el comando total nos queda asi:

ssh root@ssh-server -o VisualHostKey=yes

Con lo que nos mostrará el randomart de la clave que estamos usando para conectarnos.

Pero... y si quisiera usar el randomart para comparar claves, perdidas, danadas o simplemente confundidas?

Bueno, el servidor podría convertir las llaves públicas existentes en el archivo know_host así:

ssh-keygen -lvf  ~/.ssh/known_hosts---> ESTO ME GUSTA !!!

y podríamos comparar esta salida con el resultado en nuestro cliente con:

ssh-keygen -lv   ---> Y ESTO TAMBIEN :-)



ACTUALIZACION 16.05.2018

Tuve que configurarme un laptop nuevo para acceder a estos servidores desde la casa, pero cuando quise enviar su clave con ssh-copy-id y me pidió la contrasena de administrador que no tenia...

Tanto uso el sistema de llaves para ssh, que en un(os) servidores se me olvidó la contrasena. 

Claro, siempre podía logearme en el otro computador, por lo que desde este, importé la clave asi:
  1. pasar la clave publica .pub al computador que sí permite logearse (sin contrasena, pues tiene clave ssh)
  2. Ejecutar en consola, dentro del directorio donde esta la clave:  
    cat id_rsa.pub | ssh root@servidor-obj 'cat >> .ssh/authorized_keys && echo "Key copied"'
  3. este comando manda la salida de cat, al archivo .ssh/authorized_keys de el servidor-obj deseado.
tambien puede interesarte:
https://victorhckinthefreeworld.com/2016/01/28/transferir-llaves-ssh-de-un-pc-a-otro-en-gnulinux/



********************************* 

valido para mac y linux:

ssh-keygen -t rsa -b 4096

-- algunos anaden -f ~/.ssh/id_rsa , si no lo haces, igual el programa preguntará el nombre y el camino del archivo. Si tampoco escribes algo especial, entonces tomará el valor por defecto arriba escrito.

-- también preguntará por una "paraphrase" que es una contraseña adicional para la clave. Personalmente pienso que es muy importante, puesto que si alguien se apropiara de la clave tendría fácil acceso a todos los ámbitos donde la clave funciona. Con una paraphrase tendría también que tener esta para cualquier conexión.

Este comando generara dos claves: id_rsa und id_rsa.pub en el directorio .ssh raiz del usuario.

La .pub es la clave pública, que se copiará en los servidores dentro del archivo "know_host" y la otra es la privada, que debe permanecer secreta en este directorio donde fué generada.

Hasta aqui con la parte cliente. Ahora debemos poner la clave pública entre las claves ssh aceptadas por el servidor. Para esto usaremos ssh-copy-id

ssh-copy-id root@server
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/user/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
user@server's password:

Number of key(s) added:        1

Now try logging into the machine, with:   "ssh 'user@server'"
and check to make sure that only the key(s) you wanted were added.

 -- OJO SOBRE EL USUARIO -- si queremos dar acceso a otro userx al servidor ssh hay que ejecutar:

ssh-copy-id userx@server     desde el computador del userx y en su cuenta. Teniendo el userx ya una cuenta en el servidor.

--- NOTA IMPORTANTE ---
Si por alguna razon ssh-copy-id no funcionara, se vale tambien copiar (por ftp/filezilla, scp, ssh-->vim, etc.) la clave .pub del cliente /root/.ssh/id_rsa.pub en el servidor en el archivo "host_allow" /root/.ssh/authorized_keys

No hay comentarios:

Publicar un comentario