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?

  1. Configurar a Máquina de Controle do Ansible
  2. Definir Usuário e Chave SSH
  3. Criar Arquivo de Inventário
  4. Criar Playbook do Ansible
  5. Implantar Servidor Usando Playbook
  6. 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

Configurar Máquina de Controle do Ansible

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 provision

Agora 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/provision

Um novo usuário foi criado, e agora ele pode usar sudo sem uma senha.

Adicionar usuário

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 -y

E 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 rsa

Agora o usuário e a senha foram definidos, e a chave ssh foi criada (localizada no diretório ‘.ssh’).

usuário e senha foram definidos

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.ini

Cole a seguinte configuração lá.

[webserver]  
 ansi01 ansible_host=10.0.15.21  
 ansi02 ansible_host=10.0.15.22

Salve e saia.

Agora crie um novo arquivo de configuração do ansible ‘ansible.cfg’.

vim ansible.cfg

Cole a seguinte configuração lá.

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

Salve e saia.

Criar Novo Inventário

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_hosts

Essas impressões digitais dos servidores serão armazenadas no arquivo ‘.ssh/known_hosts’.

Criar Playbook do Ansible

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  
done

Em seguida, crie o playbook do ansible chamado ‘deploy-ssh.yml’ usando o vim.

vim deploy-ssh.yml

Cole 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=restarted

Salve 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-pass

Digite sua senha de root, e você obterá o resultado como abaixo.

Executar o Playbook

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 id

Agora você receberá as mensagens verdes como abaixo.

Testando Ansible

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.22

E você estará conectado a cada servidor usando a chave padrão ‘.ssh/id_rsa’ e usando o usuário ‘provision’.

Testar conexão do servidor

Outro teste

Implantar novo usuário e chave ssh usando ansible foi concluído com sucesso.

Referência

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.