Acceso SSH con Putty, sin claves y sin errores

Cuando accedes a un servidor SSH muy frecuentemente, o bien cuando quieres automatizar tareas o túneles contra dicho servidor, se hace casi imprescindible el uso de autenticación con llave SSH. Esto, explicado de una manera sencilla, supone que tanto el cliente (Putty) como el servidor SSH ya se conocen y confían mutuamente gracias a unas “llaves” digitales de acceso.

En internet hay cientos de manuales que te explican cómo configurar dichas claves cuando el cliente es Windows, utilizando para ello la herramienta PuttyGen.exe. Sin embargo, tras realizar todos los pasos, el usuario casi siempre se encuentra con el famoso mensaje “Server refused our key” del servidor, haciendo imposible la conexión sin clave.

 

Requisitos previos

.- Un servidor SSH con la opción “PubkeyAuthentication” activada en /etc/ssh/sshd_config
.- Una cuenta de usuario SSH activa en dicho servidor
.- PuttyGen, Putty y WinSCP

Para solucionarlo, vamos a realizar el proceso de manera inversa, es decir, generando la llave privada en el servidor:

1.- En el servidor, conectados con nuestro usuario, creamos (si no existe) y asignamos los permisos adecuados a la carpeta .ssh

mkdir ~/.ssh
chmod 700 ~/.ssh

2.- Creamos (si no existe) y asignamos permisos adecuados al fichero de la llave pública

touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

3.- Vamos a la carpeta .ssh y creamos las llaves del servidor. Acepta todas las preguntas con la respuesta por defecto. No introduzcas “frase de clave” (passphrase), o igualmente te la pedirá el servidor al conectar, por lo que no podrás acceder de manera automática.

cd ~/.ssh
ssh-keygen -t rsa

4.- Añadimos la clave pública al fichero de llaves autorizadas (recuerda que estamos dentro de la carpeta ~/.ssh)

cat id_rsa.pub >> authorized_keys

5.- Ahora nos tenemos que descargar el fichero “id_rsa” (no tiene extensión) a la máquina desde la que nos queremos conectar automáticamente. La manera más rápida es hacerla con WinSCP, conectándonos al servidor con nuestro usuario y clave SSH de toda la vida y entrando a la carpeta .ssh desde nuestro home. Ojo, como la carpeta .ssh estará oculta (por eso tiene un puntito delante), lo mejor es que escribamos la dirección completa ( /home/tu.usuario/.ssh ) usando la opción Ctrl + O.

Una vez estemos en /home/tu.usuario/.ssh (en la parte de la derecha), elegiremos en la parte de la izquierda una carpeta donde queremos descargar el archivo y lo arrastramos, o le damos al botón derecho > Descargar.

6.- Renombramos el fichero “id_rsa” a “llave-original.ppk” (o cualquier otro nombre a tu gusto)

7.- Abrimos PuttyGen.exe y cargamos el fichero que hemos descargado, con el botón “Load“:

Vamos a la ruta donde está el fichero “llave-original.ppk” y lo cargamos. Puttygen nos mostrará un mensaje confirmándolo:

8.- Ahora la clave ssh-rsa se ha convertido a algo que Putty entiende perfectamente. Guardamos el nuevo fichero “convertido” pulsando en “Save private key“. Nos preguntará si estamos seguros de querer guardar una clave privada SIN frase clave, pulsamos en “Sí”:

 

9.- Seleccionamos una ruta donde almacenar nuestra nueva clave privada, con un nombre tipo “clave-privada-ssh.ppk” (o el nombre que más rabia te de).

10.- Ahora en Putty, guardaremos una sesión con todos los parámetros necesarios para poder iniciar sesión en nuestro servidor. En la ventana “Session” ponemos la IP de nuestro servidor en Host, y escribimos un nombre de sesión que lo identifique. Clic en “Save“:

11.- En la sección “Connection > Data“, introducimos nuestro nombre de usuario SSH:

12.- En la sección “Connection > SSH > Auth“, cargamos la clave privada que guardamos con PuttyGen, pinchando en “Browse” y seleccionando el fichero “clave-privada-ssh.ppk”:

13.- Regresamos a la sección “Session” y volvemos a pulsar en “Save“, para guardar todos los nuevos parámetros de conexión asociados a nuestra sesión de conexión.

 

Si hacemos doble clic en el nombre de nuestra sesión guardada, veremos cómo Putty conecta directamente al servidor sin pedirnos autorización y sin mostrarnos el odiado mensaje de “Server refused our key“:

 

En mi caso lo utilizo para tunelar navegación a través de SSH (encriptada, por tanto) cuando me conecto desde redes ajenas (nunca te fíes de las redes ajenas), haciendo que mi portátil se conecte automáticamente gracias a MyEnTunnel, pero eso ya es asunto para otro manual.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Do NOT follow this link or you will be banned from the site!