Shell Script : Chaves públicas para automação de tarefas via SSH

Usando chaves SSH podemos fornecer uma maneira mais segura de fazer login em um servidor virtual privado com SSH do que usar uma senha sozinho. Enquanto uma senha pode, eventualmente, ser quebrada com um ataque de força bruta, chaves SSH são quase impossíveis de decifrar por força bruta sozinha.

Neste post o foco será como rodar a mesma rotina para uma série de servidores, sendo assim otimizando tempo e tendo um resultado sem falha humana.

1) Gerando a chave pública :

Crie a chave do servidor que fará a gerência de uma série de servidores :

ssh-keygen -t rsa

2) Distribuindo a chave pública :

Rode o script abaixo para distribuir a chave pública através do comando ssh-copy-id para os servidores que estão listados no arquivo /opt/servidores.txt :

#!/bin/bash
  FILE=/opt/srv.txt
  srv=1
  while read line;do
          ssh-copy-id root@$line
  #        echo "Horario do Servidor $srv `ssh root@$srv 'date'` : $line"
          ((k++))
  done < $FILE
  echo "Total number of lines in file: $k"

No primeiro momento será solicitado que seja confirmado a senha de todos os servidores .

3) Teste final :

O script abaixo entrará nos servidores e checará o horário em cada servidor da mesma listagem (/opt/srv.txt) e irá escrever a saida no arquivo /opt/dateSRV.txt :

for f in $(cat /opt/srv.txt)
        do
echo  "Horario do Servidor $f : \ `ssh root@$f 'date'`" >>  /opt/dateSRV.txt
echo ""
echo ""
echo ""
        done

scriptdate

OBS : Tenha certeza de onde você irá centralizar esta administração por questões de segurança.