Ansible Tutorial · 6 min read · Nov 16, 2025
Configurar Novo Usuário e Autenticação por Chave SSH usando Ansible no Ubuntu 18.04
Ansible é uma ferramenta de automação simples que automatiza a implantação de aplicações de software, provisionamento de nuvem e gerenciamento de configuração. É uma ferramenta de orquestração de servidores que ajuda você a gerenciar e controlar um grande número de nós de servidor a partir de locais únicos chamados ‘Máquinas de Controle’. O Ansible foi criado por Michael DeHaan em 2012 e é escrito em Python e Powershell.
Neste tutorial, aprenderemos como implantar um novo usuário e habilitar a autenticação baseada em chave SSH usando a ferramenta de automação Ansible. Também aprenderemos como configurar a ‘Máquina de Controle’ do Ansible, bem como como escrever um simples playbook do ansible.
Pré-requisitos
- 2 ou mais Servidores Ubuntu 18.04 - 10.0.15.10 control-machine
- 10.0.15.21 ansi01
- 10.0.15.22 ansi02
- Privilégios de root
O que faremos?
- Configurar a Máquina de Controle do Ansible
- Definir Usuário e Chave SSH
- Criar Arquivo de Inventário
- Criar Playbook do Ansible
- Implantar Servidor Usando Playbook
- Testes
Passo 1 - Configurar a Máquina de Controle do Ansible
Neste tutorial, usaremos os servidores Ubuntu 16.04 como a ‘Máquina de Controle’ do Ansible e hosts ansible. O primeiro passo que precisamos fazer é configurar a ‘máquina de controle’.
Instalaremos python e ansible na ‘máquina de controle’ do ansible executando o seguinte comando.
sudo apt install python ansible -y
Após a instalação ser concluída, adicionaremos um novo usuário do sistema.
Adicionaremos um novo usuário chamado ‘provision’ para realizar o provisionamento do servidor usando o Ansible.
Adicione o novo usuário ‘provision’ e dê ao usuário uma senha.
useradd -m -s /bin/bash provision
passwd provisionAgora adicione o usuário ‘provision’ ao sudo sem a senha criando um novo arquivo de configuração em ‘/etc/sudoers.d/‘ usando o comando abaixo.
echo -e 'provision\tALL=(ALL)\tNOPASSWD:\tALL' > /etc/sudoers.d/provisionUm novo usuário foi criado, e agora ele pode usar sudo sem uma senha.

Passo 2 - Definir Usuário e Chave SSH
Neste passo, definiremos o usuário para os hosts ansible. Este usuário será criado automaticamente pelo ansible, então só precisamos definir o nome de usuário, senha e a chave pública ssh.
Para cada servidor (‘ansi01’ e ‘ansi02’), criaremos um novo usuário chamado ‘provision’ com a senha ‘secret01’. E precisamos criptografar a senha ‘secret01’ usando o comando mkpasswd.
Criptografe a senha ‘secret01’ usando o comando abaixo.
mkpasswd --method=SHA-512
DIGITE A SENHA 'secret01'Nota:
Certifique-se de que o pacote ‘whois’ esteja instalado no sistema, ou você pode instalar usando o seguinte comando.
sudo apt install whois -yE você obterá a senha criptografada SHA-512.
Em seguida, geraremos uma nova chave ssh.
Faça login como o usuário ‘provision’ e gere a chave ssh usando o comando ssh-keygen.
su - provision
ssh-keygen -t rsaAgora o usuário e a senha foram definidos, e a chave ssh foi criada (localizada no diretório ‘.ssh’).

Passo 3 - Criar Novo Inventário
Neste passo, definiremos os arquivos de inventário para todos os hosts do servidor.
Faça login como o usuário ‘provision’ e crie um novo diretório para o projeto.
su - provision
mkdir -p ansible01/Vá para o diretório ‘ansible01’ e crie um novo arquivo de inventário ‘inventory.ini’ usando o vim.
cd ansible01/
vim inventory.iniCole a seguinte configuração lá.
[webserver]
ansi01 ansible_host=10.0.15.21
ansi02 ansible_host=10.0.15.22Salve e saia.
Agora crie um novo arquivo de configuração do ansible ‘ansible.cfg’.
vim ansible.cfgCole a seguinte configuração lá.
[defaults]
inventory = /home/provision/ansible01/inventory.iniSalve e saia.

O arquivo de inventário do ansible foi criado, e nossos scripts do ansible estarão localizados sob o usuário ‘provision’, dentro do diretório ‘ansible01’.
Passo 4 - Criar Playbook do Ansible
O Playbook do Ansible é um conjunto de instruções que você envia para executar em um único ou grupo de hosts de servidor. Ele representa o provisionamento do ansible, onde a automação é definida como tarefas, e todos os trabalhos como instalação de pacotes, edição de arquivos, serão feitos por módulos do ansible.
Neste passo, criaremos um novo playbook do ansible para implantar um novo usuário, implantar a chave ssh e configurar o serviço ssh.
Antes de criarmos um novo playbook do ansible, escanearemos todas as impressões digitais do servidor usando o comando ssh-keyscan como abaixo.
ssh-keyscan 10.0.15.21 >> ~/.ssh/known_hosts
ssh-keyscan 10.0.15.22 >> ~/.ssh/known_hostsEssas impressões digitais dos servidores serão armazenadas no arquivo ‘.ssh/known_hosts’.

Nota:
Se você tiver muitos nós de servidor, pode salvar sua lista de hosts e, em seguida, escanear manualmente a impressão digital da chave ssh usando um script bash como mostrado abaixo.
for i in $(cat list-hosts.txt)
do
ssh-keyscan $i >> ~/.ssh/known_hosts
doneEm seguida, crie o playbook do ansible chamado ‘deploy-ssh.yml’ usando o vim.
vim deploy-ssh.ymlCole o seguinte playbook do ansible lá.
---
- hosts: all
vars:
- provision_password: '$6$w9S3t7x1kRtmG0u$6nVU9KZsC12Q8DYI4FtgKPy.e/cq/jseB/.DViTO1SpUnoCy.dxcOf8hyfitGq5V0yhgXccxzlqm2o.I3SlDJ0'
gather_facts: no
remote_user: root
tasks:
- name: Adicionar um novo usuário chamado provision
user:
name=provision
password={{ provision_password }}
- name: Adicionar usuário provision aos sudoers
copy:
dest: "/etc/sudoers.d/provision"
content: "provision ALL=(ALL) NOPASSWD: ALL"
- name: Implantar Chave SSH
authorized_key: user=provision
key="{{ lookup('file', '/home/provision/.ssh/id_rsa.pub') }}"
state=present
- name: Desabilitar Autenticação por Senha
lineinfile:
dest=/etc/ssh/sshd_config
regexp='^PasswordAuthentication'
line="PasswordAuthentication no"
state=present
backup=yes
notify:
- restart ssh
- name: Desabilitar Login do Root
lineinfile:
dest=/etc/ssh/sshd_config
regexp='^PermitRootLogin'
line="PermitRootLogin no"
state=present
backup=yes
notify:
- restart ssh
handlers:
- name: restart ssh
service:
name=sshd
state=restartedSalve e saia.
No script do playbook:
- criamos o script do playbook ‘deploy-ssh.yml’ para ser aplicado em todos os servidores definidos no arquivo ‘inventory.ini’.
- criamos a variável ansible ‘provision_password’, contendo a senha criptografada para o novo usuário.
- Definimos os fatos do Ansible como ‘não’.
- Definimos o usuário ‘root’ como um usuário remoto para realizar a automação das tarefas.
- Criamos novas tarefas para adicionar um novo usuário, adicionar o usuário aos sudoers e fazer upload da chave ssh.
- Criamos novas tarefas para configurar os serviços ssh, desabilitar o login do root e desabilitar a autenticação por senha. As tarefas para configurar o ssh acionarão os manipuladores ‘restart ssh’.
- Criamos um manipulador para reiniciar o serviço ssh.
Passo 5 - Executar o Playbook
Faça login como o usuário ‘provision’ e vá para o diretório ‘ansible01’.
su - provision
cd ansible01/Agora execute o playbook ‘deploy-ssh.yml’ usando o comando conforme mostrado abaixo.
ansible-playbook deploy-ssh.yml --ask-passDigite sua senha de root, e você obterá o resultado como abaixo.

Todas as tarefas para implantar um novo usuário e chave ssh foram concluídas com sucesso.
Passo 6 - Testes
Teste usando o comando ansible.
ansible webserver -m ping
ansible webserver -m shell -a idAgora você receberá as mensagens verdes como abaixo.

Agora podemos gerenciar os servidores ‘ansi01’ e ‘ansi02’ usando Ansible, e o usuário ‘provision’ será o usuário padrão para o Ansible.
Testando a conexão com os servidores
ssh 10.0.15.21
ssh 10.0.15.22E você estará conectado a cada servidor usando a chave padrão ‘.ssh/id_rsa’ e usando o usuário ‘provision’.


Implantar novo usuário e chave ssh usando ansible foi concluído com sucesso.
Referência
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.