Ansible Tutorial · 6 min read · Nov 16, 2025

Configurar Nuevo Usuario y Autenticación SSH Key. usando Ansible en Ubuntu 18.04

Ansible es una herramienta de automatización simple que automatiza el despliegue de aplicaciones de software, la provisión en la nube y la gestión de la configuración. Es una herramienta de orquestación de servidores que te ayuda a gestionar y controlar un gran número de nodos de servidor desde un solo lugar llamado ‘Máquinas de Control’. Ansible fue creado por Michael DeHaan en 2012 y está escrito en Python y Powershell.

En este tutorial, aprenderemos cómo desplegar un nuevo usuario y habilitar la autenticación basada en claves SSH utilizando la herramienta de automatización Ansible. También aprenderemos cómo configurar la ‘Máquina de Control’ de Ansible, así como cómo escribir un simple playbook de ansible.

Prerrequisitos

  • 2 o más Servidores Ubuntu 18.04 - 10.0.15.10 control-machine
  • 10.0.15.21 ansi01
  • 10.0.15.22 ansi02
  • Privilegios de root

¿Qué haremos?

  1. Configurar la Máquina de Control de Ansible
  2. Definir Usuario y Clave SSH
  3. Crear Archivo de Inventario
  4. Crear Playbook de Ansible
  5. Desplegar Servidor Usando Playbook
  6. Pruebas

Paso 1 - Configurar la Máquina de Control de Ansible

En este tutorial, utilizaremos los servidores Ubuntu 16.04 como la ‘Máquina de Control’ de Ansible y los hosts de ansible. El primer paso que necesitamos hacer es configurar la ‘máquina de control’.

Instalaremos python y ansible en la ‘máquina de control’ de ansible ejecutando el siguiente comando.

sudo apt install python ansible -y

Configurar Máquina de Control de Ansible

Después de que la instalación esté completa, agregaremos un nuevo usuario del sistema.

Agregaremos un nuevo usuario llamado ‘provision’ para realizar la provisión del servidor utilizando Ansible.

Agrega un nuevo usuario ‘provision’ y dale una contraseña.

useradd -m -s /bin/bash provision  
passwd provision

Ahora agrega el usuario ‘provision’ para sudo sin contraseña creando un nuevo archivo de configuración bajo ‘/etc/sudoers.d/‘ utilizando el siguiente comando.

echo  -e 'provision ALL=(ALL)   NOPASSWD:   ALL' > /etc/sudoers.d/provision

Se ha creado un nuevo usuario, y ahora puede usar sudo sin contraseña.

Agregar usuario

Paso 2 - Definir Usuario y Clave SSH

En este paso, definiremos el usuario para los hosts de ansible. Este usuario será creado automáticamente por ansible, así que solo necesitamos definir el nombre de usuario, la contraseña y la clave pública ssh.

Para cada servidor (‘ansi01’ y ‘ansi02’), crearemos un nuevo usuario llamado ‘provision’ con la contraseña ‘secret01’. Y necesitamos cifrar la contraseña ‘secret01’ utilizando el comando mkpasswd.

Cifra la contraseña ‘secret01’ utilizando el siguiente comando.

mkpasswd --method=SHA-512  
TYPE THE PASSWORD 'secret01'

Nota:

Asegúrate de que el paquete ‘whois’ esté instalado en el sistema, o puedes instalarlo utilizando el siguiente comando.

sudo apt install whois -y

Y obtendrás la contraseña cifrada SHA-512.

A continuación, generaremos una nueva clave ssh.

Inicia sesión como el usuario ‘provision’ y genera la clave ssh utilizando el comando ssh-keygen.

su - provision  
ssh-keygen -t rsa

Ahora el usuario y la contraseña han sido definidos, y la clave ssh ha sido creada (ubicada en el directorio ‘.ssh’).

usuario y contraseña han sido definidos

Paso 3 - Crear Nuevo Inventario

En este paso, definiremos los archivos de inventario para todos los hosts del servidor.

Inicia sesión como el usuario ‘provision’ y crea un nuevo directorio para el proyecto.

su - provision  
mkdir -p ansible01/

Ve al directorio ‘ansible01’ y crea un nuevo archivo de inventario ‘inventory.ini’ utilizando vim.

cd ansible01/  
vim inventory.ini

Pega la siguiente configuración allí.

[webserver]  
 ansi01 ansible_host=10.0.15.21  
 ansi02 ansible_host=10.0.15.22

Guarda y sal.

Ahora crea un nuevo archivo de configuración de ansible ‘ansible.cfg’.

vim ansible.cfg

Pega la siguiente configuración allí.

[defaults]  
 inventory = /home/provision/ansible01/inventory.ini

Guarda y sal.

Crear Nuevo Inventario

El archivo de inventario de ansible ha sido creado, y nuestros scripts de ansible estarán ubicados bajo el usuario ‘provision’, dentro del directorio ‘ansible01’.

Paso 4 - Crear Playbook de Ansible

El Playbook de Ansible es un conjunto de instrucciones que envías para ejecutar en un solo o grupo de hosts de servidor. Representa la provisión de ansible, donde la automatización se define como tareas, y todos los trabajos como instalar paquetes, editar archivos, serán realizados por módulos de ansible.

En este paso, crearemos un nuevo playbook de ansible para desplegar un nuevo usuario, desplegar la clave ssh y configurar el servicio ssh.

Antes de crear un nuevo playbook de ansible, escanearemos todas las huellas digitales del servidor utilizando el comando ssh-keyscan como se muestra a continuación.

ssh-keyscan 10.0.15.21 >> ~/.ssh/known_hosts  
ssh-keyscan 10.0.15.22 >> ~/.ssh/known_hosts

Esas huellas digitales de los servidores se almacenarán en el archivo ‘.ssh/known_hosts’.

Crear Playbook de Ansible

Nota:

Si tienes muchos nodos de servidor, puedes guardar tu lista de hosts y luego escanear manualmente la huella digital de la clave ssh utilizando un script bash como se muestra a continuación.

for i in $(cat list-hosts.txt)  
do  
ssh-keyscan $i >> ~/.ssh/known_hosts  
done

A continuación, crea el playbook de ansible llamado ‘deploy-ssh.yml’ utilizando vim.

vim deploy-ssh.yml

Pega el siguiente playbook de ansible allí.

---  
 - hosts: all  
   vars:  
     - provision_password: '$6$w9S3t7x1kRtmG0u$6nVU9KZsC12Q8DYI4FtgKPy.e/cq/jseB/.DViTO1SpUnoCy.dxcOf8hyfitGq5V0yhgXccxzlqm2o.I3SlDJ0'  
  gather_facts: no  
   remote_user: root  
   
   tasks:  
   
   - name: Agregar un nuevo usuario llamado provision  
     user:  
          name=provision  
          password={{ provision_password }}  
   
   - name: Agregar usuario provision a los sudoers  
     copy:  
          dest: "/etc/sudoers.d/provision"  
          content: "provision  ALL=(ALL)  NOPASSWD: ALL"  
   
   - name: Desplegar Clave SSH  
     authorized_key: user=provision  
                     key="{{ lookup('file', '/home/provision/.ssh/id_rsa.pub') }}"  
                     state=present  
   
   - name: Deshabilitar Autenticación por Contraseña  
     lineinfile:  
           dest=/etc/ssh/sshd_config  
           regexp='^PasswordAuthentication'  
           line="PasswordAuthentication no"  
           state=present  
           backup=yes  
     notify:  
       - reiniciar ssh  
   
   - name: Deshabilitar Inicio de Sesión de Root  
     lineinfile:  
           dest=/etc/ssh/sshd_config  
           regexp='^PermitRootLogin'  
           line="PermitRootLogin no"  
           state=present  
           backup=yes  
     notify:  
       - reiniciar ssh  
   
   handlers:  
   - name: reiniciar ssh  
     service:  
       name=sshd  
       state=restarted

Guarda y sal.

En el script del playbook:

  • creamos el script del playbook ‘deploy-ssh.yml’ que se aplicará a todos los servidores definidos en el archivo ‘inventory.ini’.
  • creamos la variable de ansible ‘provision_password’, que contiene la contraseña cifrada para el nuevo usuario.
  • Establecemos los hechos de Ansible en ‘no’.
  • Definimos el usuario ‘root’ como un usuario remoto para realizar la automatización de tareas.
  • Creamos nuevas tareas para agregar un nuevo usuario, agregar el usuario a los sudoers y subir la clave ssh.
  • Creamos nuevas tareas para configurar los servicios ssh, deshabilitar el inicio de sesión de root y deshabilitar la autenticación por contraseña. Las tareas para configurar el ssh activarán los controladores de ‘reiniciar ssh’.
  • Creamos un controlador para reiniciar el servicio ssh.

Paso 5 - Ejecutar el Playbook

Inicia sesión como el usuario ‘provision’ y ve al directorio ‘ansible01’.

su - provision  
cd ansible01/

Ahora ejecuta el playbook ‘deploy-ssh.yml’ utilizando el comando como se muestra a continuación.

ansible-playbook deploy-ssh.yml --ask-pass

Escribe tu contraseña de root, y obtendrás el resultado como se muestra a continuación.

Ejecutar el Playbook

Todas las tareas para desplegar un nuevo usuario y clave ssh se han completado con éxito.

Paso 6 - Pruebas

Prueba utilizando el comando ansible.

ansible webserver -m ping  
ansible webserver -m shell -a id

Ahora recibirás los mensajes verdes como se muestra a continuación.

Pruebas de Ansible

Ahora podemos gestionar esos servidores ‘ansi01’ y ‘ansi02’ utilizando Ansible, y el usuario ‘provision’ será el usuario predeterminado para Ansible.

Prueba la conexión a los servidores

ssh 10.0.15.21  
ssh 10.0.15.22

Y estarás conectado a cada servidor utilizando la clave predeterminada ‘.ssh/id_rsa’ y utilizando el usuario ‘provision’.

Probar conexión al servidor

Otra prueba

Desplegar un nuevo usuario y clave ssh utilizando ansible se ha completado con éxito.

Referencia

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.