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?
- Configurar la Máquina de Control de Ansible
- Definir Usuario y Clave SSH
- Crear Archivo de Inventario
- Crear Playbook de Ansible
- Desplegar Servidor Usando Playbook
- 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
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 provisionAhora 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/provisionSe ha creado un nuevo usuario, y ahora puede usar sudo sin contraseña.

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 -yY 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 rsaAhora el usuario y la contraseña han sido definidos, y la clave ssh ha sido creada (ubicada en el directorio ‘.ssh’).

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.iniPega la siguiente configuración allí.
[webserver]
ansi01 ansible_host=10.0.15.21
ansi02 ansible_host=10.0.15.22Guarda y sal.
Ahora crea un nuevo archivo de configuración de ansible ‘ansible.cfg’.
vim ansible.cfgPega la siguiente configuración allí.
[defaults]
inventory = /home/provision/ansible01/inventory.iniGuarda y sal.

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_hostsEsas huellas digitales de los servidores se almacenarán en el archivo ‘.ssh/known_hosts’.

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
doneA continuación, crea el playbook de ansible llamado ‘deploy-ssh.yml’ utilizando vim.
vim deploy-ssh.ymlPega 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=restartedGuarda 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-passEscribe tu contraseña de root, y obtendrás el resultado como se muestra a continuación.

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 idAhora recibirás los mensajes verdes como se muestra a continuación.

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.22Y estarás conectado a cada servidor utilizando la clave predeterminada ‘.ssh/id_rsa’ y utilizando el usuario ‘provision’.


Desplegar un nuevo usuario y clave ssh utilizando ansible se ha completado con éxito.
Referencia
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.