Cómo instalar y configurar SSH en Ubuntu de forma segura
Aprende a instalar OpenSSH en Ubuntu, generar claves Ed25519, deshabilitar el acceso root y proteger tu servidor contra ataques automáticos.

En esta página
SSH es el canal cifrado con el que se administra un ordenador Linux a distancia: terminal, transferencia de archivos o túneles para otros servicios. En Ubuntu Desktop el servidor SSH no viene instalado por defecto, mientras que en las imágenes para servidores suele estar ya presente. En esta guía lo instalarás, te conectarás desde tu ordenador con una clave y lo pondrás seguro.
Instalación #
sudo apt update
sudo apt install openssh-server
El servicio arranca solo. Comprueba su estado:
sudo systemctl status ssh

En Ubuntu 24.04 no te asustes si, antes de la primera conexión, el estado aparece como inactive con la línea TriggeredBy: ssh.socket: desde Ubuntu 22.10 SSH se inicia mediante el socket al primer intento de conexión, y sudo systemctl status ssh.socket debe aparecer como activo. Para desactivar por completo el acceso remoto, por ejemplo durante un mantenimiento, usa sudo systemctl disable --now ssh.socket ssh.
Si el firewall UFW está activo, autoriza SSH antes de cerrar la sesión en la que estás trabajando:
sudo ufw allow OpenSSH
sudo ufw enable
Desde otro ordenador te conectas con:
ssh nomeutente@indirizzo-ip
El comando funciona de la misma forma en Linux, macOS y Windows 10 y 11, que ya tienen instalado el cliente SSH: basta con abrir la Terminal de Windows o PowerShell. En la primera conexión se te pedirá confirmar la huella del servidor: escribe yes.
Las claves: cómo funcionan #
Un par de claves tiene una parte privada, que se queda en tu ordenador y no debes dársela a nadie, y una parte pública, que copias en el servidor. Cuando te conectas, el servidor verifica que tienes la clave privada correcta sin que nada secreto viaje por la red.
Es más seguro que una contraseña porque las claves no se pueden adivinar: los ataques de fuerza bruta, que prueban millones de combinaciones, no sirven para nada.
Generar el par de claves #
En tu ordenador, no en el servidor:
ssh-keygen -t ed25519 -C "il-mio-portatile"

Ed25519 es el algoritmo recomendado hoy en día: claves cortas, verificación rápida y alta seguridad. Usa RSA solo si tienes que conectarte a sistemas antiguos que no conocen Ed25519, y en ese caso, con al menos 4096 bits.
Cuando te pida una frase de acceso (passphrase), ponla: protege la clave si alguien pone las manos sobre tu ordenador. Para no tener que escribirla cada vez, el agente SSH se encarga de recordarla hasta el final de la sesión.
Copiar la clave pública en el servidor #
ssh-copy-id nomeutente@indirizzo-ip
Te pedirá la contraseña una sola vez y configurará los permisos correctos. En Windows ssh-copy-id no existe: abre el archivo C:\Users\<nome>\.ssh\id_ed25519.pub, copia su contenido y pégalo al final del archivo ~/.ssh/authorized_keys en el servidor.
Prueba la conexión con la clave inmediatamente desde una segunda ventana, manteniendo abierta la primera. Solo cuando funcione, procede a bloquear las contraseñas.
Asegurar la configuración #
Los ajustes del servidor están en /etc/ssh/sshd_config. En las versiones recientes de Ubuntu es mejor no tocar ese archivo y crear, en su lugar, un archivo propio dentro de /etc/ssh/sshd_config.d/, que se leerá como complemento:
sudo nano /etc/ssh/sshd_config.d/99-sicurezza.conf
Contenido recomendado:
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
X11Forwarding no
MaxAuthTries 3
Qué hace cada línea:
| Ajuste | Efecto |
|---|---|
PermitRootLogin no | Nadie puede entrar directamente como root: entras con tu usuario y usas sudo |
PasswordAuthentication no | Solo se entra con claves, las contraseñas son rechazadas |
KbdInteractiveAuthentication no | Cierra otra vía que permitiría el acceso mediante contraseña |
MaxAuthTries 3 | Limita los intentos por cada conexión |
X11Forwarding no | Desactiva el reenvío de la interfaz gráfica, que casi nadie utiliza |
Antes de aplicar, comprueba que la sintaxis sea correcta:
sudo sshd -t
Si no imprime nada es que todo está bien y puedes recargar el servicio:
sudo systemctl reload ssh
Defenderse de los ataques automáticos #
Cambiar el puerto del 22 a un número alto no hace que el servidor sea más seguro, pero reduce muchísimo el ruido en los logs, ya que casi todos los escaneos automáticos prueban solo el puerto estándar. Se configura con Port 2222 en tu archivo de configuración; recuerda abrir el nuevo puerto en el firewall (sudo ufw allow 2222/tcp). Desde Ubuntu 22.10 en adelante, incluida la 24.04, tras el cambio también son necesarios sudo systemctl daemon-reload y sudo systemctl restart ssh.socket; de lo contrario, el servidor seguirá escuchando en el 22.
Fail2ban bloquea durante un tiempo las direcciones que fallan varias veces seguidas:
sudo apt install fail2ban
Con la configuración por defecto ya protege SSH. Puedes ver las direcciones bloqueadas con sudo fail2ban-client status sshd.
Limitar los usuarios que pueden entrar es sencillo y eficaz: con AllowUsers nomeutente en la configuración, ninguna otra cuenta podrá conectarse, ni siquiera con credenciales válidas.
El archivo de configuración del cliente #
En el ordenador desde el que te conectas, el archivo ~/.ssh/config evita que tengas que recordar direcciones y puertos:
Host server-casa
HostName 192.168.1.50
User alessandro
Port 2222
IdentityFile ~/.ssh/id_ed25519
A partir de ese momento basta con ssh server-casa. El nombre también funciona con scp y rsync.
Transferir archivos #
scp documento.pdf server-casa:/home/alessandro/
Para carpetas enteras y copias que repites a menudo, usa rsync, que solo transfiere lo que ha cambiado:
rsync -avz --progress cartella/ server-casa:/percorso/di/destinazione/
Si prefieres un programa con ventanas, FileZilla y WinSCP se conectan por SFTP usando las mismas credenciales y la misma clave.
Preguntas frecuentes #
Si desactivo las contraseñas y pierdo la clave privada, ¿me quedo fuera? #
Sí, y es un riesgo que debes gestionar de antemano. Dos precauciones: añade al servidor las claves públicas de todos los dispositivos desde los que te vayas a conectar, y guarda una copia de la clave privada en un lugar seguro, por ejemplo, en tu gestor de contraseñas. Si el servidor es una máquina virtual de un proveedor, normalmente también hay una consola de emergencia en el panel web.
¿Ed25519 o RSA? #
Ed25519 siempre que puedas: es más moderno, las claves son más cortas y la verificación es más rápida. RSA a 4096 bits solo para sistemas antiguos que no admitan Ed25519.
¿Sirve de algo cambiar el puerto? #
No aumenta la seguridad, porque un escaneo dirigido encontrará el servicio de todos modos. Sin embargo, reduce muchísimo los intentos automáticos y hace que los logs sean legibles: cuando aparezca un intento, sabrás que merece tu atención.
¿Cómo me conecto si mi IP de casa cambia? #
Con un servicio de DNS dinámico, que asocia un nombre fijo a tu dirección y la actualiza automáticamente cuando cambia. Muchos routers ya lo admiten desde su configuración. Como alternativa, una VPN como Tailscale te permite acceder al servidor sin necesidad de abrir puertos en el router.
¿Qué significa el aviso de que la clave del host ha cambiado? #
Que la identidad del servidor no coincide con la guardada en la primera conexión. Puede ser normal si has reinstalado el sistema o cambiado de máquina, o bien la señal de alguien intentando interceptar la conexión. Antes de continuar, comprueba el motivo; solo entonces elimina la entrada antigua con ssh-keygen -R indirizzo-ip.

