# Deshabilitar el Inicio de Sesión SSH del Usuario Root con Ansible

- Link: https://binariocero.com/ansible/deshabilitar-el-inicio-de-sesion-ssh-del-usuario-root-con-ansible
- Published: 2025-08-02T09:55:02+02:00
- Author: Juan José Fernández Durán

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

En muchos entornos de producción y seguridad, se considera una buena práctica deshabilitar
el inicio de sesión remoto del usuario `root` mediante SSH. Esto ayuda a mitigar
ataques automatizados de fuerza bruta y mejora la trazabilidad de accesos, forzando
a los administradores a usar usuarios nominales con privilegios elevados mediante`
sudo`.

Este artículo describe cómo automatizar esta tarea mediante Ansible, utilizando 
un _playbook_ que detecta la distribución del sistema, realiza una copia de seguridad
del archivo de configuración de SSH, modifica el parámetro `PermitRootLogin`, y 
reinicia el servicio SSH de manera segura.

## Objetivo

Modificar de forma automatizada el archivo `/etc/ssh/sshd_config` en múltiples sistemas
Linux (Debian, Ubuntu, CentOS, RHEL), para establecer:

    ```wp-block-preformatted
    PermitRootLogin no
    ```

Con ello, se desactiva el acceso SSH directo como root, sin afectar al acceso mediante
otros usuarios con privilegios.

## Descripción del Playbook

Este _playbook_ de Ansible realiza las siguientes acciones:

 1. **Detectar la distribución del sistema operativo**
    Usamos el módulo `setup` para
    obtener la variable `ansible_distribution`, que nos permitirá elegir el nombre 
    correcto del servicio SSH (puede variar entre `ssh` y `sshd`).
 2. **Hacer una copia de seguridad de la configuración actual de SSH**
    Esto proporciona
    una vía de recuperación en caso de error.
 3. **Modificar el parámetro `PermitRootLogin`**
    Se asegura de que esté establecido
    como `no`, eliminando comentarios si existen.
 4. **Reiniciar el servicio SSH**
    Aplica los cambios, seleccionando dinámicamente el
    nombre correcto del servicio según la distribución.

## Playbook de Ansible

    ```wp-block-preformatted
    ---- name: Deshabilitar login root en SSH  hosts: all  become: yes  tasks:    - name: Detectar distribución      ansible.builtin.setup:        filter: ansible_distribution    - name: Copia de seguridad del archivo sshd_config      ansible.builtin.copy:        src: /etc/ssh/sshd_config        dest: /etc/ssh/sshd_config.bak        remote_src: yes        mode: '0644'    - name: Deshabilitar PermitRootLogin      ansible.builtin.lineinfile:        path: /etc/ssh/sshd_config        regexp: '^#?PermitRootLogin'        line: 'PermitRootLogin no'        backup: yes    - name: Reiniciar servicio SSH      ansible.builtin.service:        name: "{{ 'ssh' if ansible_distribution in ['Debian', 'Ubuntu'] else 'sshd' }}"        state: restarted
    ```

## Consideraciones de Seguridad

 * Antes de aplicar este cambio en entornos productivos, asegúrate de que existan
   cuentas de usuario alternativas con acceso SSH y privilegios de `sudo`.
 * Si el acceso remoto se pierde, podrías requerir acceso físico o consola remota
   para restaurar la configuración.

## Conclusión

Automatizar la desactivación del acceso root vía SSH es una medida efectiva para
mejorar la seguridad de los sistemas Linux. Con Ansible, esta tarea se puede aplicar
de forma rápida, coherente y segura en múltiples servidores.
