---
title: "Cómo instalar y configurar SSH en Ubuntu de forma segura"
description: "Aprende a instalar OpenSSH en Ubuntu, generar claves Ed25519, deshabilitar el acceso root y proteger tu servidor contra ataques automáticos."
url: "https://www.alemasone.com/es/instalar-configurar-ssh-ubuntu-seguro/"
language: "es"
published: 2024-12-02
updated: 2026-09-19
categories: ["Seguridad Y Privacidad"]
translations:
  it: "https://www.alemasone.com/it/configurare-ssh-ubuntu/"
  en: "https://www.alemasone.com/en/securely-install-configure-ssh-ubuntu/"
  fr: "https://www.alemasone.com/fr/installer-configurer-ssh-ubuntu-securite/"
  pt: "https://www.alemasone.com/pt/configurar-ssh-ubuntu-seguranca/"
  de: "https://www.alemasone.com/de/ssh-ubuntu-sicher-installieren-konfigurieren/"
---

# Cómo instalar y configurar SSH en Ubuntu de forma segura

Un servidor SSH accesible desde internet recibe intentos de acceso automáticos pocos minutos después de encenderse. Dos ajustes eliminan casi todo el riesgo: **acceso solo con claves** y **login de root desactivado**. Solo te llevará cinco minutos, y debes hacerlo antes que cualquier otra cosa.

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

```bash
sudo apt update
sudo apt install openssh-server
```

El servicio arranca solo. Comprueba su estado:

```bash
sudo systemctl status ssh
```

![Terminal de Ubuntu con el resultado de systemctl status ssh y el servicio marcado como active running](systemctl-status-ssh-ubuntu.png "La línea que debes comprobar es la que indica active (running)")

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:

```bash
sudo ufw allow OpenSSH
sudo ufw enable
```

> **No actives UFW antes de haber permitido [OpenSSH](https://www.openssh.com/).** La conexión actual se cerrará y te quedarás fuera. En un servidor remoto al que no puedes acceder físicamente, este es el error que más caro sale.

Desde otro ordenador te conectas con:

```bash
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:

```bash
ssh-keygen -t ed25519 -C "il-mio-portatile"
```

![Terminal con ssh-keygen -t ed25519: frase de acceso, ruta de los dos archivos e impronta de la clave](ssh-keygen-ed25519-ubuntu.png "El comando crea dos archivos: la clave privada y la pública con extensión .pub")

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

```bash
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:

```bash
sudo nano /etc/ssh/sshd_config.d/99-sicurezza.conf
```

Contenido recomendado:

```text
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:

```bash
sudo sshd -t
```

Si no imprime nada es que todo está bien y puedes recargar el servicio:

```bash
sudo systemctl reload ssh
```

> **Mantén abierta la sesión actual** mientras aplicas los cambios y prueba la nueva conexión desde otra ventana. Si te has equivocado en algo, todavía tendrás una conexión activa para solucionarlo.

## 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](https://github.com/fail2ban/fail2ban)** bloquea durante un tiempo las direcciones que fallan varias veces seguidas:

```bash
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:

```text
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

```bash
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:

```bash
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](/es/mejores-soluciones-vpn-self-hosted/) 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`.
