Curso de Ubuntu 26.04 / Configurar OpenSSH y verificar la autenticación por clave

La autenticación de clave SSH en Ubuntu se configura verificando el oyente real del servidor y registrando solo la clave pública del cliente, luego probando con una nueva conexión. La acción de limitar la autenticación por contraseña se realiza después de que se complete el inicio de sesión con clave y la verificación de privilegios de administrador, manteniendo las sesiones de administración existentes y la consola.

Verificar servicios, sockets y direcciones

sudo apt update
sudo apt install openssh-server
systemctl status ssh.socket ssh.service --no-pager
sudo ss -lntp
ip -br address

Compruebe el puerto y proceso a la escucha junto con ssh.socket y ssh.service; una unidad inactiva no demuestra por sí sola que no haya escucha. Conservamos el puerto existente. En la topología NAT y red solo anfitrión, el servidor usa 192.168.56.20 y el cliente Linux, 192.168.56.10. Genere y copie las claves desde ese cliente.

La guía de Ubuntu OpenSSH explica la instalación, la prioridad de los archivos de configuración y los métodos de verificación.

En el cliente Linux, verifique command -v ssh y command -v ssh-copy-id, y si no existen, prepárelos con sudo apt update && sudo apt install openssh-client. Cambie el nombre de usuario general del servidor por el que realmente creó durante la instalación. Primero asegure la ruta de autenticación para registrar la primera clave pública o el acceso a la consola; para esta práctica, no se relajan las políticas de autenticación del servidor en producción.

Verificar la identidad del servidor y crear la clave del cliente

Desde la consola del servidor, consulte su huella con sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub y compárela con la presentada al cliente mediante un canal confiable. En el cliente, prepare ~/.ssh con mkdir -p "$HOME/.ssh" y chmod 700 "$HOME/.ssh" si corresponde. Las órdenes siguientes se ejecutan en el cliente; confirme antes que la ruta de la clave nueva no existe.

ssh-keygen -t ed25519 -f "$HOME/.ssh/ubuntu-lab-ed25519"
ssh-copy-id -i "$HOME/.ssh/ubuntu-lab-ed25519.pub" labuser@192.168.56.20

Sustituya labuser y la dirección por la cuenta y el servidor reales. Establezca y conserve una frase de contraseña para la clave privada. Copie únicamente el contenido público .pub; el nombre es una convención y no transforma una clave privada en pública. El ejemplo utiliza un cliente Linux: una instalación estándar de OpenSSH en Windows puede no incluir ssh-copy-id.

Probar solo la autenticación con clave en conexiones nuevas

ssh -i "$HOME/.ssh/ubuntu-lab-ed25519" -o IdentitiesOnly=yes -o PreferredAuthentications=publickey -o PasswordAuthentication=no labuser@192.168.56.20

Distinga la frase de contraseña local de la clave privada de la contraseña de la cuenta remota. El comando limita la autenticación a clave pública; si tiene otras identidades configuradas, confirme con el diagnóstico -v que se acepta la huella prevista. Tras entrar, compruebe whoami y sudo -v. Si falla, revise la cuenta, el directorio personal, .ssh, authorized_keys, sus propietarios y permisos y los registros. No lo solucione concediendo permisos 777.

Política de cuentas de práctica y verificación de configuración

Solo después de comprobar la clave y sudo en una VM de laboratorio, respalde /etc/ssh/sshd_config y los archivos de /etc/ssh/sshd_config.d que vaya a modificar. Registre si 00-lab-auth.conf ya existe y edítelo con sudoedit /etc/ssh/sshd_config.d/00-lab-auth.conf, conservando lo que deba mantenerse. El bloque siguiente define una política de autenticación exclusivamente por clave; no lo traslade a un sistema con autenticación multifactor (MFA) u otros métodos organizacionales.

PubkeyAuthentication yes
AuthenticationMethods publickey
PasswordAuthentication no
PermitRootLogin no

OpenSSH utiliza primero los valores leídos en muchos ítems, por lo que no se debe confiar solo en el nombre del archivo y es necesario verificar la configuración final. Si hay condiciones de Match, también se requiere consultar sshd -T -C reflejando las condiciones reales de usuario y cliente. Este ejemplo es solo para la explicación de la política y no se aplica antes de verificar la conexión con la clave privada.

sudo sshd -t
sudo sshd -T | grep -E '^(pubkeyauthentication|authenticationmethods|passwordauthentication|permitrootlogin) '

Orden de aplicación, reinicio y restauración

Cuando la sintaxis es correcta y el servicio SSH se está ejecutando realmente, se vuelve a leer la configuración de autenticación en sudo systemctl reload ssh.service. Esta práctica no cambia el puerto. Cambiar el Port o ListenAddress del socket requiere revisar procedimientos separados como la configuración de creación del socket y daemon-reload.

Antes de cerrar la sesión anterior, pruebe el acceso con clave, sudo y el rechazo de los métodos no permitidos. Verifique de nuevo después del reinicio previsto. Si falla, desde la consola restaure solo el archivo modificado; si lo creó para esta prueba, conserve una copia y retire únicamente ese archivo nuevo. Repita la comprobación de sintaxis y la aplicación. No ignore avisos de cambio de clave del host ni borre el registro existente sin verificar la causa de forma independiente.