Oddo - Complexus

Ansible na prática #6 – envio de chaves SSH em lote

Provisionando um laboratório para estudar o Ansible e outras coisas

Por:  Adelmo da Silva – consultor de sistemas

Mais um artigo sobre Ansible?! Sim e não! Hehehe.

Publiquei vários artigos sobre o nosso amado Ansible e, acreditem, nem arranhei a superfície desta maravilha. Contudo, para usarmos essa ferramenta, precisamos de que o servidor do Ansible tenha uma conexão de confiança com os outros servidores da rede.

Imagine o seguinte cenário: Você fica é designado para gerir um parque com mais de 150 servidores, físicos e/ou virtuais. Você vai implementar o Ansible nesta rede com esse volume de servidores e precisa criar uma conexão de confiança com eles, um a um. Neste caso, você precisaria abrir o terminal, gerar a chave ssh e depois digitar, para cada IP, por exemplo, o comando “ssh-copy-id root@192.168.100.X”, onde o “X” varia de 50 a 100. Ou seja, do IP 192.168.100.50 até o 192.168.100.200. O mesmo comando 150 vezes. Eita!!! Lá se foi nosso cafezinho.

Comptia CySA+ - Multirede

Bom, mas como um bom profissional, e com recursos infinitos de Internet, depois de várias tentativas consegui montar um shellscript que executa o ssh-copy-id para um lote de IP que estão num arquivo.txt.

Bom, bora pôr a mão na massa!

Script de Envio de Chaves SSH em Lote

Depois de você ter criado  as suas chaves SSH privadas e públicas, através do comando ssh-keygen, vamos preparar dois aquivos: envia-chaves-ssh.sh e hosts.txt.

No arquivo hosts.txt, coloque todos os IP’s da sua rede, um por linha:

Comptia CySA+ - Multirede

192.168.100.50

192.168.100.51

192.168.100.52

Comptia CySA+ - Multirede

192.168.100.200

 Depois, vamos criar o arquivo que irá fazer todo o serviço: envia-chaves-ssh.sh.

No terminal, crie o arquivo utilizando vim, vi ou nano, conforme a sua preferência. No meu caso, eu fiz “vim envia-chaves-ssh.sh”:

#!/bin/bash

Comptia CySA+ - Multirede

# Define o usuário e senha a serem usados para conectar aos hosts

USER=root

PASSWORD=root12345

# Loop para iterar sobre cada host no arquivo hosts.txt

Comptia CySA+ - Multirede

while read HOST; do

  # Executa o comando ssh-copy-id para copiar a chave SSH para o host atual

  echo “Enviando chave SSH para ${HOST}…”

  sshpass -p “${PASSWORD}” ssh-copy-id -o StrictHostKeyChecking=no “${USER}@${HOST}” -f

Comptia CySA+ - Multirede

done < hosts.txt

Nas terceira e quarta linhas temos as credenciais que você deseja usar na conexão ssh. O principal é o loop. Nessa parte é mostrado que será usado o comando sshpass, que  é uma ferramenta de linha de comando simples, que não precisa de autenticação interactiva, para que scripts de shell automatizados, como esse, possam ser executados. Maravilha, hein! Explicando em miúdos:

  • sshpass: é um programa que permite fornecer uma senha como argumento para o comando ssh. Ele é útil quando você precisa automatizar conexões SSH que exigem autenticação por senha.
  • -p “${PASSWORD}”: é usado para especificar a senha a ser usada para autenticação SSH. A senha é fornecida como uma variável chamada ${PASSWORD}. Essa variável foi definida no início do script.
  • ssh-copy-id: é o comando que copia a chave pública SSH para o host remoto. Ele se conecta ao host usando SSH e instala a chave pública no arquivo ~/.ssh/authorized_keys do usuário remoto.
  • -o StrictHostKeyChecking=no: é uma opção para desabilitar a verificação rigorosa da chave de host. Normalmente, quando você se conecta a um host pela primeira vez, o SSH exige que você confirme a autenticidade da chave do host. Essa opção permite ignorar essa verificação, o que pode ser útil em cenários automatizados.
  • “${USER}@${HOST}”: especifica o nome de usuário (${USER}) e o endereço do host remoto (${HOST}) para o qual você deseja copiar a chave pública SSH. A variável $USER foi definida no início do script. Já a variável $HOST vai receber cada um dos IP’s do arquivo txt.
  • -f: é uma opção para forçar a cópia da chave pública SSH. Essa opção substitui qualquer chave pública existente no host remoto.

Depois de ter criado o shell script, instale a ferramenta SSHPASS, caso não tenha nativamente no seu sistema operacional. Mude as permissões do shell script para executável:

chmod +x envia-chaves-ssh.sh

Comptia CySA+ - Multirede

./envia-chaves-ssh.sh

Lembre-se de que o arquivo hosts.txt deve estar no mesmo directório do script.

Se as credenciais estiverem corretas, elas serão enviadas e registradas nos IP’s dentro do arquivo hosts.txt.

Pronto! 150 servidores, agora, estarão com a relação de confiança estabelecida com o Ansible. Agora basta você começar a usar. Utiliza o comando Ad-Hoc com o módulo ping e teste a conexão:

Comptia CySA+ - Multirede

ansible all -m ping

Se o resultado do ping estiver verde, ambiente pronto para o imperador Ansible. He he he. E o cafezinho está garantido!

Até o próximo artigo.

 

Comptia CySA+ - Multirede

Partilhar artigo:

Versao3 - Cópia

Somos um portal de notícias, voltado às tecnologias de informação e inovação tecnológica. Informamos com Rigor, Objectividade e Imparcialidade. Primamos pela qualidade, oferecendo aos nossos leitores, a inclusão tecnológica e a literacia digital

+(244) 930747817

info@pti.ao | redaccao@pti.ao

Mais Lidas

Últimos Artigos

Desenvolvido Por SP Media