Autenticación de claves SSH en PuTTY

Autenticación de claves SSH en PuTTY

Introducción

En esta guía aprenderás cómo configurar la autenticación por claves SSH usando PuTTY (un cliente SSH popular para Windows). Al usar autenticación basada en claves en lugar de autenticación basada en contraseñas, puedes mejorar la seguridad de tu conexión SSH. Con la autenticación basada en claves, solo aquellos que poseen la clave privada correspondiente pueden iniciar sesión, proporcionando un método de autenticación más seguro y confiable.

En esta guía revisaremos el proceso de configuración de autenticación usando claves SSH con PuTTY y aplicaciones cliente.

Advertencia importante de seguridad: La clave privada debe mantenerse en estricta confidencialidad. Nunca la compartas con terceros, no la almacenes en dispositivos no seguros y usa una contraseña para la clave para protección adicional. Si la clave se ve comprometida, genera inmediatamente una nueva y actualiza el archivo authorized_keys en el servidor.

1) Generación de Claves

PuTTYgen es una herramienta del paquete PuTTY, diseñada principalmente para Windows, para generar pares de claves SSH y convertir sus formatos. Su función principal es crear pares de claves públicas y privadas que pueden almacenarse en archivos .ppk (formato específico de PuTTY). Además, PuTTYgen puede convertir claves entre formatos, asegurando compatibilidad con varios clientes y servidores SSH, como OpenSSH.

PuTTYgen permite generar pares de claves que consisten en una clave pública (public key), que puede compartirse, y una clave privada (private key), que debe permanecer confidencial. La clave pública se usa para autenticación al conectarse a servidores remotos.

El formato .ppk es específico de PuTTY, pero PuTTYgen puede convertir claves a otros formatos, como OpenSSH.

Alternativa: Generando Claves en PuTTYgen

Puedes generar claves directamente en PuTTYgen en una máquina Windows sin usar un servidor Linux. Para hacer esto:

  1. Abre PuTTYgen.

  2. Selecciona el tipo de clave (por ejemplo, RSA o EdDSA) y el tamaño (se recomienda 2048 bits o más).

    Autenticación de claves SSH en PuTTY

  3. Haz clic en "Generate" y mueve el ratón para generar entropía.

    Autenticación de claves SSH en PuTTY

  4. Guarda la clave pública (copia el texto del campo "Public key for pasting into OpenSSH authorized_keys file") y la clave privada como .ppk.

    Autenticación de claves SSH en PuTTY

  5. Añade la clave pública al archivo ~/.ssh/authorized_keys en el servidor (ver abajo).

Sin embargo, en esta guía cubriremos la generación de claves en un servidor Linux usando ssh-keygen, luego las convertiremos para PuTTY.

Prerrequisitos

Antes de comenzar, asegúrate de tener los siguientes componentes:

  1. PuTTY y PuTTYgen — descárgalos del sitio web oficial. PuTTYgen está incluido en el paquete PuTTY.

  2. Servidor Linux con OpenSSH instalado (usualmente preinstalado en la mayoría de distribuciones).

  3. Acceso SSH al servidor con contraseña (para la configuración inicial de claves).

  4. Opcional: Contraseña para proteger las claves (recomendado para mayor seguridad).

Verificación de Configuración del Servidor

Antes de generar claves, asegúrate de que la autenticación por claves esté habilitada en el servidor. Abre el archivo /etc/ssh/sshd_config (con privilegios de root):

sudo nano /etc/ssh/sshd_config

Asegúrate de que la línea PubkeyAuthentication yes esté presente y no comentada. Si se realizan cambios, guarda el archivo y reinicia el servicio SSH:

sudo systemctl restart sshd

(En algunas distribuciones: sudo service ssh restart).

Guía Paso a Paso para Generación de Claves en Linux

Conéctate al servidor vía SSH con contraseña (usando PuTTY u otro cliente) y realiza los siguientes pasos como el usuario con el que quieres autenticarte (se recomienda no usar root por seguridad; usa sudo cuando sea necesario).

  1. Ejecuta la utilidad ssh-keygen. Te preguntará dónde guardar las claves (por defecto ~/.ssh/id_rsa) y te pedirá establecer una contraseña (recomendado para protección adicional; puede omitirse presionando Enter).
ssh-keygen -t rsa -b 2048

(Opcional: usa -t ed25519 para un algoritmo más moderno).

  1. Ahora tienes dos archivos en el directorio ~/.ssh:

    • id_rsa — clave privada
    • id_rsa.pub — clave pública
  2. Visualiza las claves (opcional, para verificación):

cat ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub
  1. Navega a la carpeta ~/.ssh (si no estás ya allí):
cd ~/.ssh
  1. Añade la clave pública al archivo authorized_keys (usa >> para evitar sobrescribir archivos existentes):
cat id_rsa.pub >> authorized_keys
  1. Establece los permisos correctos (esto es crítico para que SSH funcione):
chmod 700 ~/.ssh
chmod 600 id_rsa
chmod 600 authorized_keys

Después de estos pasos, el servidor está listo para aceptar conexiones basadas en claves. Reinicia SSH si cambiaste la configuración:

sudo systemctl restart sshd

2) Conversión de Clave y Autorización con PuTTY

Ahora transfiere la clave privada (id_rsa) del servidor a tu máquina Windows local y conviértela al formato .ppk para PuTTY.

Transfiriendo la Clave a la Máquina Local

Usa scp (del paquete PuTTY — pscp.exe) u otro método seguro. Ejemplo con pscp (ejecuta en el símbolo del sistema de Windows):

pscp user@server_ip:~/.ssh/id_rsa C:\path\to\local\id_rsa

(Reemplaza user@server_ip con tus datos, C:\path\to\local con la ruta local).

Advertencia: Nunca transfieras claves por canales no seguros (ej., email). Usa métodos encriptados.

Conversión al Formato .ppk con PuTTYgen

  1. Abre PuTTYgen en Windows.

    Autenticación de claves SSH en PuTTY

  2. Haz clic en "Load" y selecciona el archivo id_rsa (PuTTYgen soporta formato OpenSSH).

    Autenticación de claves SSH en PuTTY

  3. Si la clave está protegida con contraseña, ingrésala.

    Autenticación de claves SSH en PuTTY

  4. Después de cargar, haz clic en "Save private key" y guarda el archivo como .ppk (ej., mykey.ppk). Acepta guardar sin contraseña si no quieres una adicional (pero se recomienda usar contraseña).

Configurando PuTTY para Usar la Clave

  1. Abre PuTTY.

  2. En la ventana principal, especifica la dirección IP del servidor, puerto (usualmente 22) y tipo de conexión SSH.

  3. Navega a "Connection → SSH → Auth → Credentials".

  4. En el campo "Private key file for authentication", especifica la ruta al archivo .ppk.

    Autenticación de claves SSH en PuTTY

  5. Opcional: Para auto-login, ve a "Connection → Data" y en el campo "Auto-login username", especifica el nombre de usuario (ej., root o tu usuario).

  6. Guarda la sesión para conveniencia y conéctate.

Al conectar, si la clave está protegida con contraseña, PuTTY te pedirá ingresarla. Si todo está configurado correctamente, iniciarás sesión sin que se te pida la contraseña del servidor.

Consejo: Para gestionar múltiples claves, usa PuTTY Pageant (agente de claves del paquete PuTTY). Carga el .ppk en Pageant, y PuTTY lo usará automáticamente.

Conclusión

Al configurar la autenticación por claves SSH con PuTTY y un servidor Linux, estableces una conexión más segura y confiable. Usar claves SSH elimina la necesidad de ingresar contraseñas, reduciendo el riesgo de ataques de fuerza bruta e intercepción. Sigue los pasos descritos en esta guía para configurar la autenticación por claves SSH en PuTTY y disfruta de los beneficios.

Adicional: Actualiza regularmente las claves, monitorea los logs del servidor (/var/log/auth.log) y desactiva la autenticación por contraseña en sshd_config (PasswordAuthentication no) si las claves son el único método de inicio de sesión. Si surgen problemas, verifica los permisos de archivos y la configuración del servidor.