Clave pública: conectarse al servidor SSH sin contraseña

Autenticación mediante clave pública

A la hora de gestionar un equipo (normalmente servidor) de forma remota mediante SSH, en general debemos introducir nuestras credenciales (usuario y contraseña) por cada conexión que queramos establecer. Este proceso es repetitivo y conlleva una pérdida de tiempo importante.

Hoy vamos a ver cómo establecer conexión con el servidor SSH mediante clave pública sin tener que introducir una y otra vez nuestra contraseña para autenticarnos. La autenticación mediante clave pública se basa en dos claves (generalmente RSA), una pública y la otra privada. La clave privada contiene todos los datos incluida la clave pública y ésta última permite saber si aquella clave privada es su pareja mediante su comparación con la clave pública que hay dentro de la clave privada.

Para poder autenticarnos mediante claves RSA, primero generar dichas claves, después copiar y agregar la clave pública al servidor y finalmente establecer conexión con el servidor SSH usando nuestra clave privada.

En esta guía damos por hecha la instalación y configuración del servidor SSH. Si queréis saber cómo instalar y configurar el servidor SSH OpenSSH en GNU/Linux, podéis acceder al siguiente artículo: http://www.elladodelgeek.es/instalar-y-configurar-servidor-ssh-linux/

1. Generar pareja de claves RSA

Generar pareja de claves RSA en cliente GNU/Linux

Para generar una pareja de claves RSA en sistemas GNU/Linux, normalmente se usa el comando ssh-keygen:

ssh-keygen

Generar claves RSA en GNU/Linux

En la imagen anterior se muestran las rutas donde se han guardados las dos claves.
Clave privada: /home/elladodelgeek/.ssh/id_rsa
Clave pública: /home/elladodelgeek/.ssh/id_rsa.pub

Generar pareja de claves RSA en cliente Windows

Para generar una pareja de claves RSA en sistemas Windows, vamos a usar el componente que viene por defecto con el cliente SSH PuTTY llamado puttygen. De forma que necesitaríamos tener instalado PuTTY en el sistema.

Descargar instalador de PuTTY

Una vez descargado e instalado el cliente SSH PuTTY con todos sus componentes, procedemos a abrir el programa llamado puttygen.

Una vez abierto, para generar una pareja de claves RSA, debemos tener seleccionada la opción SSH2-RSA y hacer clic sobre la opción Generate:

Generar claves RSA en Windows

Debemos hacer cualquier movimiento con el ratón para que se puedan generar datos aleatorios que compondrán nuestra clave privada. Si no hay movimiento, el programa no será capaz de acabar de generar las claves.

Una vez generada la pareja de claves RSA, debemos guardarlas. Pero antes, podemos asignarle cualquier valor descriptivo al campo Key comment, como por ejemplo elladodelgeek public key on windows using PuTTY. También le podemos asignar una contraseña a nuestra clave privada, para que nadie que no sepa dicha contraseña la pueda usar para autenticarse con el servidor SSH.

Para exportar nuestra clave privada solo debemos hacer clic sobre el botón Save private key. Pero, para que nuestra clave pública sea compatible con OpenSSH, debemos copiar todo el contenido del textarea titulado Public key for pasting into OpenSSH authorized_keys file: y guardarlo en un archivo llamado “clavepublica_elladodelgeek.txt”, por ejemplo:

Exportar clave pública en PuTTY

Debemos mantener a salvo nuestra clave privada. Ya que cuando agreguemos nuestra clave pública a las claves permitidas en el servidor, cualquiera que tenga acceso a nuestra clave privada podría tener acceso al servidor.

2. Agregar la clave pública al servidor SSH

Agregar la clave pública al servidor SSH desde cliente GNU/Linux

Para agregar nuestra clave pública a las claves públicas permitidas del servidor SSH, primero debemos copiar dicha clave al servidor:

scp -P 268 ~/.ssh/id_rsa.pub elladodelgeek@172.16.0.1:/home/elladodelgeek/

Copiar clave pública al servidor usando SCP

scp Comando para copiar archivos de forma segura a una máquina remota mediante SSH
-P 268 Puerto del servidor SSH (P mayúsucula)
~/.ssh/id_rsa.pub Ruta donde está almacenada nuestra clave pública en el equipo local
elladodelgeek@172.16.0.1 Usuario y dirección IP del servidor SSH
/home/elladodelgeek/ Ruta donde se guardará la clave pública en el servidor

Una vez copiada nuestra clave pública al servidor, la debemos agregar al archivo de claves permitidas del usuario con el que nos interese conectarnos de forma remota mediante SSH usando nuestra clave privada para identificarnos. En nuestro caso, como el archivo no existía le hemos tenido que asignar permisos 600 para que sea reconocido por el servidor SSH OpenSSH:

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

Agregar la clave pública a authorized_keys

Agregar la clave pública al servidor SSH desde cliente Windows

El proceso es muy parecido al empleado en el apartado anterior. En este caso podemos establecer conexión con el servidor SSH usando PuTTY, copiar el contenido de nuestra clave pública y agregarlo de forma manual al archivo authorized_keys. O usando el programa WinSCP, copiar el archivo al servidor y luego agregar la clave pública de la misma forma que hemos hecho en el apartado anterior.

3. Conectarse al servidor sin contraseña

Desde sistema cliente GNU/Linux

Para conectarnos al servidor SSH usando nuestra clave privada en sistemas GNU/Linux, no debemos hacer nada más que establecer conexión y el cliente SSH instalado en nuestra máquina local por defecto se encarga de coger la clave privada pertinente de nuestro directorio ~/.ssh/:

ssh -p 268 elladodelgeek@172.16.0.1

Conexión SSH sin contraseña

Y tal y como queríamos, se puede apreciar en la imagen anterior que no se nos ha pedido contraseña para conectarnos mediante SSH al servidor.

Desde sistema cliente Windows

En clientes Windows, debemos hacer un poco más de trabajo para poder identificarnos mediante nuestra clave privada y que el servidor nos deje conectarnos comprobando la autenticación con la clave pública que hayamos agregado antes.

Para empezar debemos, abrir el cliente SSH PuTTY, introduir los datos del servidor (IP y puerto) y después desde el menú izquierdo debemos ir a Connection > SSH > Auth y en el apartado Private key file for authentication debemos especificar la ruta a nuestra clave privada. Una vez hecho esto, establecemos conexión haciendo clic sobre el botón Open:

Conectarse por SSH usando PUTTY

Habiendo hecho lo anterior, nos pediría el nombre de usuario con el que nos queremos autenticar y automáticamente cogerá nuestra clave privada y la usará para autenticarnos con el servidor SSH mediante la clave pública que hemos agregado antes y no nos pedirá contraseña:

Autenticarse por SSH sin contraseña usando PUTTY

Servidor SSH: Instalar y configurar OpenSSH en GNU/Linux
Servicio FTP: Introducción y cómo configurar un servidor FTP en sistemas GNU/Linux

Publicar un comentario