Conexión SSH mediante certificación por clave RSA: guía paso a paso sin contraseña
Introducción
SSH (Secure Shell) es el protocolo estándar para acceder de forma segura a máquinas remotas a través de una red. Más allá de la autenticación por contraseña, SSH permite configurar una autenticación basada en certificados de clave pública/privada RSA, lo que elimina la necesidad de introducir una contraseña en cada conexión y refuerza la seguridad del acceso.
En esta guía se documenta el proceso completo: configuración de la red entre dos máquinas virtuales en VirtualBox, instalación del servidor SSH, generación del par de claves RSA, copia de la clave pública al servidor y ajuste del archivo de configuración para deshabilitar la autenticación por contraseña.
Requisitos previos
- Dos máquinas virtuales Linux en VirtualBox (o cualquier hipervisor equivalente).
- Ambas máquinas con adaptador de red en modo NAT y un segundo adaptador en modo Red interna.
- Acceso a terminal con privilegios de superusuario (
sudo) en ambas máquinas.
Paso 1: Configuración de la red en VirtualBox
Para que las dos máquinas virtuales puedan comunicarse entre sí es necesario configurar dos adaptadores de red en cada una: uno en modo NAT (para acceso a Internet) y otro en modo Red interna (para la comunicación directa entre máquinas).
En este ejemplo se asignan las siguientes direcciones IP en la red interna:
PC1 (servidor): inet 192.168.1.15 netmask 255.255.255.0 broadcast 192.168.1.255
PC2 (cliente): inet 192.168.1.20 netmask 255.255.255.0 broadcast 192.168.1.255Paso 2: Verificación de conectividad entre máquinas (ping)
Una vez configuradas las interfaces de red, se verifica que ambas máquinas se ven entre sí mediante el comando ping. Se realiza la prueba en ambas direcciones: desde PC1 hacia PC2 y desde PC2 hacia PC1.
ping 192.168.1.20 # Desde PC1 hacia PC2
ping 192.168.1.15 # Desde PC2 hacia PC1Paso 3: Instalación del servidor SSH
En la máquina que actuará como servidor SSH (PC1) se instala el paquete openssh-server con el siguiente comando:
sudo apt install openssh-serverPaso 4: Verificación del estado del servicio SSH
Una vez instalado, se comprueba que el servicio SSH está activo y en ejecución con el siguiente comando:
sudo systemctl status sshEl servicio debe aparecer con el estado active (running). Si no estuviera activo, se puede iniciar manualmente con sudo systemctl start ssh.
Paso 5: Generación del par de claves RSA en el servidor
Para habilitar la autenticación sin contraseña, se genera un par de claves RSA de 4096 bits en PC1 (servidor) mediante el comando:
ssh-keygen -b 4096 -t rsaEl proceso mostrará una serie de preguntas (ruta de almacenamiento de la clave y passphrase opcional). Se debe presionar Enter en cada pregunta para aceptar los valores por defecto y generar la clave sin passphrase adicional.
El comando genera dos archivos en el directorio ~/.ssh/:
id_rsa— clave privada (no debe compartirse nunca).id_rsa.pub— clave pública (es la que se copia al cliente).
Paso 6: Copia de la clave pública al cliente
Una vez generado el par de claves, se copia la clave pública de PC1 a la máquina cliente (PC2) mediante el comando ssh-copy-id:
ssh-copy-id bixi@192.168.1.20La primera vez que se ejecuta este comando será necesario introducir la contraseña del usuario en PC2. El sistema confirmará que la clave ha sido añadida correctamente al archivo ~/.ssh/authorized_keys del cliente. A partir de ese momento, las conexiones SSH desde PC1 hacia PC2 no requerirán contraseña.
Paso 7: Configuración del archivo sshd_config para mayor seguridad
El último paso consiste en reforzar la seguridad del servidor SSH modificando su archivo de configuración para deshabilitar la autenticación por contraseña y forzar el uso exclusivo de claves. Se accede al archivo con el siguiente comando:
sudo nano /etc/ssh/sshd_configDentro del archivo se localizan y modifican los siguientes parámetros:
PasswordAuthentication no— desactiva la autenticación por contraseña.PubkeyAuthentication yes— habilita explícitamente la autenticación por clave pública.PermitRootLogin no— impide el acceso directo como usuario root por SSH.
Tras guardar los cambios, es necesario reiniciar el servicio SSH para que la nueva configuración tenga efecto:
sudo systemctl restart sshConclusión y siguientes pasos
Con estos pasos se ha configurado una conexión SSH completamente funcional entre dos máquinas Linux, autenticada exclusivamente mediante certificación por clave RSA y sin necesidad de introducir contraseña. Este método es más seguro que la autenticación por contraseña, ya que elimina el riesgo de ataques de fuerza bruta contra las credenciales.
Como siguientes pasos se recomienda:
- Cambiar el puerto por defecto (22) del servidor SSH a un puerto no estándar para reducir el ruido de los escáneres automáticos, modificando el parámetro
Portensshd_config. - Configurar un cortafuegos (ufw) para permitir únicamente conexiones SSH desde IPs de confianza.
- Habilitar el registro de conexiones SSH para auditar los accesos al servidor.
- Explorar el uso de SSH tunneling para redirigir tráfico de red de forma segura a través del canal cifrado.
Entradas recientes
- De la web estática a la dinámica: diferencias entre HTML y PHP, motores de búsqueda y herramientas
- KDE vs GNOME: diferencias, historia, alternativas y tutorial para instalar nuevos entornos en tu distribución
- Cómo funciona una fuente de alimentación: desmontaje, análisis de componentes y comprobación con multímetro
- Redes locales en Linux: tarjetas de red, comandos de diagnóstico, Wireshark y conceptos clave
- Permisos en Linux: acceso administrativo, chmod y chown

