Cómo activar SSH en Ubuntu

Ejecuta sudo apt update, luego sudo apt install openssh-server y después sudo systemctl enable --now ssh. Si ufw está activo, ejecuta también sudo ufw allow OpenSSH. Comprueba con ss -tln | grep ':22' y conecta desde otra máquina con ssh user@server.

Actualizada el . Comandos ejecutados en contenedores desechables con systemd: Ubuntu 24.04 (OpenSSH 9.6) y Ubuntu 26.04 (OpenSSH 10.2).

Instalar y arrancar el servidor

sudo apt update
sudo apt install openssh-server
sudo systemctl enable --now ssh

En un sistema Ubuntu normal el paquete empieza a escuchar en cuanto se instala. El último comando no hace daño si ya lo hace, y deja la configuración explícita.

Comprobar que escucha

ss -tln | grep ':22'

Deberías ver una línea para 0.0.0.0:22 y otra para [::]:22. Para hallar la dirección a la que conectar, ejecuta:

hostname -I

Por qué ssh.service puede decir inactive aunque SSH funcione

Desde Ubuntu 22.10, incluidas la 24.04 y la 26.04, una unidad llamada ssh.socket mantiene el puerto 22 por defecto, y arranca ssh.service en la primera conexión. Así, justo tras instalar, o tras sudo systemctl stop ssh, puedes ver esto y aun así poder conectar:

systemctl is-active ssh.socket    # active
systemctl is-active ssh           # inactive until the first connection

Es normal. Si detienes el servicio mientras el socket está activo, systemd avisa de que su unidad disparadora sigue activa, y la siguiente conexión lo arranca otra vez. Para detener SSH de verdad, detén ambos:

sudo systemctl disable --now ssh ssh.socket

Si prefieres el comportamiento antiguo, en el que sshd funciona todo el tiempo y lee su puerto en cada reinicio, desactiva el socket:

sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh

Debian hace lo contrario por defecto: en Debian 13, ssh.service está activado y ssh.socket desactivado. Ubuntu 22.04 también usa el servicio simple.

Abrir el cortafuegos

ufw está desactivado por defecto en la mayoría de las instalaciones. Compruébalo primero:

sudo ufw status

Si dice Status: active, permite SSH:

sudo ufw allow OpenSSH

Si dice inactive y quieres activarlo, añade la regla primero y actívalo después. El orden importa, mira cómo permitir SSH en ufw. Un servidor en la nube suele tener un segundo cortafuegos en el panel del proveedor, que se abre allí.

Probar el acceso

Desde otra máquina:

ssh user@server

La primera conexión muestra la huella del servidor y te pide confirmar. Si la conexión falla, estas guías cubren los mensajes habituales: Connection refused y Connection timed out.

Qué es esa huella y dónde se guarda lo explica known_hosts y la huella del servidor.

Cambiar la configuración

Los ajustes están en /etc/ssh/sshd_config y en los archivos de /etc/ssh/sshd_config.d/. Un archivo de esa carpeta tiene prioridad sobre el principal, y algunas imágenes traen uno que define el acceso por contraseña, así que comprueba qué está realmente en vigor:

sudo sshd -T | grep -i -E '^(port|passwordauthentication) '

Tras una edición, comprueba la sintaxis y luego reinicia:

sudo sshd -t
sudo systemctl restart ssh

Un puerto o una dirección de escucha nuevos son distintos, porque también hay que reconstruir el socket. Mira cómo cambiar el puerto SSH.

Lo siguiente es darte una clave en lugar de una contraseña: genera una clave y luego desactiva el acceso por contraseña.

Preguntas

¿Viene SSH instalado por defecto en Ubuntu?

El cliente normalmente sí. El servidor depende de cómo se instaló el sistema: Ubuntu Desktop no lo incluye, y el instalador de Server pregunta. Ejecuta dpkg -l openssh-server para comprobarlo.

¿Qué diferencia hay entre ssh y sshd en Ubuntu?

sshd es el programa servidor. En Ubuntu su unidad de systemd se llama ssh, y sshd es un alias que se crea al activar la unidad, así que usa ssh en los comandos.

Fuentes

Más en SSH en cada sistema

Todas las guías