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

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

Eu tenho um trabalho Chron executando um script bash que então usa SSH para meu servidor. Mas o endereço IP do meu servidor muda de tempos em tempos (meu script bash tem uma maneira de encontrar o novo endereço IP). Mas o problema é que meu script bash recebe o aviso "A autenticidade do host não pode ser estabelecida ...". não quero usar StrictHostKeyChecking=nopor causahomem no meioataques. No entanto:

Se oChave RSAé idêntico a, por exemplo, umChave RSAjá no known_hostarquivo, ou umChave RSAque salvei em algum outro MyServersPublicKeyarquivo, presumo que seja meu servidor e tenha apenas um novo IP.

O próprio aviso exibe oimpressão digitaldoChave RSAdo host "desconhecido", não doChave RSAem si. Suponho que eu poderia economizarChave RSA impressão digitaldo meu host e depois fazer com que meu script bash consuma oimpressão digitaldo aviso e compare-o com o salvoimpressão digital. Mas estou me perguntando se alguém conhece uma maneira mais fácil.

Preciso escrever meu próprio script bash para isso ou há algo disponível?

Responder1

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

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

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

sed -i -e "s/your_host/new_ip,your_host/" ~/.ssh/known_hosts

informação relacionada