2022-02-02

Conectarse por SSH con RSA, sin contraseña

Introducción

Nos planteamos conectar por ssh desde PC01 a PC02 sin poner usuario ni contraseña manteniendo la encriptación.

En mi caso PC01 tiene ip 192.168.1.100 que sería mi pc y la PC02 con ip 192.168.1.101 sería mi servidor.

Generar Claves RSA

Usamos shh-keygen para optener el par de llaves, una privada y la otra pública.

Al ejecutar nos pide que escribamos el nombre del archivo, presionamos Enter Enter Enter para guardarlas con el nombre y en el path por defecto.

ssh-keygen -b 4096 -t rsa

Nos va a pedir una contraseña, si no queremos, no es necesario, solo le damos Enter.

Podemos agregar un comentario, nombre del usuario, nombre del equipo y fecha.

ssh-keygen -b 4096 -t rsa -C "$(whoami)@$(hostname)-$(date -I)"

Se crearán los archivos correspondientes a la llave privada y la pública, id_rsa y id_rsa.pub en /home/youruser/.ssh/

La clave privada nadie debe tener acceso, la clave publica es lo que podemos transferir a otras pcs.

Enviar las claves al servidor con ssh-copy-id.

ssh-copy-id root@192.168.1.101

Con esto enviamos la clave pública de nuestro usuario a PC02, por lo tanto en el servidor tiene que existir el mismo nombre de usuario, ej. root.

Listo.

A partir de ahora nos podemos conectar sin contraseña. Esto es porque el protocolo ssh puede negociar la conexión comparando el par de llaves, la pública que le enviamos con la privada que tenemos nosotros.

ssh root@192.168.1.101

Enviar las claves usando ssh.

Con cat leemos el contenido del archivo .pub y con ssh nos conectamos al servidor, verificamos que exista la carpeta en el usuario y la creamos, guardamos el archivo en esa carpeta, y leemos el contenido nuevamente pero del archivo ya copiado en el servidor y escribimos el contenido en autorized_keys.
cat ~/.ssh/id_rsa.pub | ssh root@192.168.1.101 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" 

Registrar localmente en el servidor

Si ya tenemos el archivo id_rsa.pub copiado en la carpeta  ~/.ssh/id_rsa.pub, solo tenesmos que ejecutar los siguientes.

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys"

Registrar manualmente 

Si tenemos la cadena de la clave podemos hacerlo con echo.
mkdir -p ~/.ssh
echo cadena_completa_public_key >> ~/.ssh/authorized_keys

Editar manualmente el archivo authorized_keys" 

Como último recurso. También se puede abrir el archivo con un editor de texto y pegar la clave de nuestro cliente.