Dentro de um script bash fazendo um ssh, adicione automaticamente o host somente para certas chaves RSA conhecidas

3

Eu tenho um trabalho Chron executando um script bash que, em seguida, SSH para um servidor meu. Mas o endereço IP do meu servidor muda de tempos em tempos (meu script bash tem um jeito de encontrar procurando o novo endereço IP). Mas o problema é que, em seguida, meu script bash recebe o aviso "Autenticidade do host não pode ser estabelecido ...". Eu não quero usar StrictHostKeyChecking=no por causa dos ataques man-in-the-middle . No entanto:

Se a chave RSA for idêntica a uma chave RSA já no arquivo known_host , ou uma chave RSA que eu salvei em algum outro arquivo MyServersPublicKey , então eu assumo que é o meu servidor e só tem um novo IP.

O aviso em si exibe a impressão digital da chave RSA do host "desconhecido", não da própria chave RSA . Eu suponho que eu poderia salvar a chave RSA impressão digital do meu host e então ter meu script bash consumindo a impressão digital do aviso e compará-lo com a impressão digital salva . Mas eu estou querendo saber se alguém sabe de uma maneira mais fácil.

Eu tenho que escrever meu próprio script bash para isso, ou há algo disponível?

    
por Joe C 11.02.2016 / 15:15

1 resposta

2

Como observado nos comentários, a criação de certificados (chaves de host assinadas) ajudará você a resolver esse problema (consulte a página de manual para ssh-keygen , capítulo "Certificados" que descreve esse procedimento). Basicamente, você criaria uma CA no servidor, assinaria as chaves do host e armazenaria a chave pública da CA no seu known_hosts , como:

@cert-authority * ssh-rsa AAAAB5W...

A outra possibilidade seria escrever algum script bash, que adicionaria seu IP na frente da chave do host em known_hosts (se você não tiver o arquivo hash). Algo assim deveria funcionar:

sed -i -e "s/your_host/new_ip,your_host/" ~/.ssh/known_hosts
    
por 11.02.2016 / 16:41