Script de shell para corrigir permissões de arquivo de chave autorizadas em grande número de hosts

1

Eu tenho um grande número de sistemas que eu preciso conectar (hosts.txt) e atualizar as permissões do arquivo de chave autorizado antes de empurrar as chaves para os sistemas.

Eu herdei os arquivos que podem pressionar as teclas, verifique sub-redes para hosts que respondem ao 22 com um conjunto de nomes de usuários / senhas e verifique se o ssh pode se conectar com a nossa chave. A maioria deles está escrita na expectativa.

Agora preciso pegar a lista e enviar as permissões (0700 ou 0600?), se necessário, para os hosts que responderam à verificação da sub-rede, para que possamos enviar as chaves para os sistemas em massa.

Eu posso descobrir a parte do / ler read hosts.txt. A parte em que estou preso é a programação do ssh para o sistema de destino (use sshpass ou espera para automação de senha) com a execução do arquivo chmod 0700 ~ / .ssh / authorized_key.

Eu realmente gostaria de ver alguns códigos de retorno quando as falhas acontecem (os administradores antigos às vezes tornam o proprietário root do diretório ~ / .ssh ou até mesmo o diretório ~ para o usuário padrão que estamos ajustando.

Eu posso fazer manualmente o ssh user @ host. O usuário (e senha) permanecerá o mesmo, apenas o host mudará de acordo com o arquivo hosts.txt que estaremos carregando. Eu só estou tentando evitar isso centenas de vezes manualmente. Uma vez feito isso, poderei usar o pushkey.exp para automaticamente (fazer / while) atualizar todos os sistemas corrigidos.

Aqui está o que eu tenho até este ponto:

#!/bin/bash
# Permissions fix authorized_keys, using bash
#
# Usage: ./manage_host.sh
# -----------------------------------------------------------------------------
file="/home/user1/bin/hosts.txt"
while IFS= read -r host
do

        expect -f
                spawn ssh remoteuser@$host
                expect "assword:"
                send "ourpasswordhere\r"
        if [ ! -d "~/.ssh"]; then mkdir -p ~/.ssh fi

        if [ ! -f "~/.ssh/authorized_keys."]; then touch ~/.ssh/authorized_keys. fi

        chown -R remoteuser:remoteuser ~/.ssh
        # store exit status of chown
        status=$?

        # Error checking subroutine to post failures on manager server
        if [ $status -ne 0 ]; then echo "'$host' ownership could not be set to svcsis." >> results.txt; fi

        chmod 600 ~/.ssh/authorized_keys

        exit

        ./push_key.exp remoteuser@$host

        ./keycheck.sh $host >>response.txt
done
    
por KevinJ 20.02.2017 / 02:37

0 respostas