%3F.png)
Só para esclarecer isso, para que não me digam para não fazer isso:
- As máquinas em questão estão todas em uma rede local com pouco ou nenhum acesso à Internet (nem estão bem conectadas à rede corporativa)
- Todo mundo que tem a capacidade de configurar um ataque man-in-the-middle já tem root na máquina
- As máquinas são reinstaladas como parte dos procedimentos de controle de qualidade, portanto, é importante ter novas chaves de host (precisamos ver como as outras máquinas reagem); Estou apenas tentando tornar minha máquina mais agradável de usar.
Eu faço muitas reinstalações em máquinas que alteram suas chaves de host. Isso exige que você entre ~/.ssh/known_hosts
na minha máquina e vá para a chave antiga e adicione a nova chave. Isso é um grande incômodo, então comecei a considerar maneiras de automatizar isso.
Não quero aceitar cegamente qualquer chave de host, portanto, corrigir o OpenSSH para ignorar as chaves de host está fora de questão. Eu considerei criar um wrapper em torno do ssh
comando que detectará o erro retornando ssh
e me apresentará um prompt para excluir a chave antiga ou sair. Também considerei criar um daemon que buscaria a chave de host mais recente de uma máquina em uma lista de permissões (há cerca de vinte máquinas que estão sendo constantemente reinstaladas) e substituiria a chave de host antiga em known_hosts
.
Como você automatizaria esse processo?
Responder1
Dependendo das respostas para a reinstalação/IPs permanecerem os mesmos, eu consideraria configurar "StrictHostKeyChecking" em ~/.ssh/config para Host/IPs/Padrões específicos.
Se isso não for possível, tente automatizar o carregamento de chaves nos hosts, talvez no processo de reinstalação.
Responder2
Se você estiver usando um sistema de gerenciamento de configuração, como o Puppet, poderá usá-lo para manter o /etc/ssh/ssh_known_hosts
arquivo atualizado com os hosts à medida que as máquinas clientes fazem check-in no servidor central. Então você pode ativar a StrictHostKeyChecking
opção no arquivo de configuração.
Isso é exatamente o que fazemos com nossas instâncias do Amazon EC2 que fazem check-in com nosso servidor Puppet master. Temos o servidor fantoche servindo como bastião jumpbox em nossas instâncias EC2 e é a única máquina com permissão para fazer SSH nelas. Em seguida, mantemos o /etc/ssh/ssh_known_hosts
arquivo atualizado com as chaves do host e o /etc/hosts
arquivo para atualizar o endereço IP DNS público do EC2.
Responder3
Você quer ssh-keyscan
, que é distribuído com o openssh. Depágina de manual:
ssh-keyscan is a utility for gathering the public ssh host keys of a num‐
ber of hosts. It was designed to aid in building and verifying
ssh_known_hosts files.
Como parte de sua reinstalação, faça com que uma máquina com uma lista atualizada de chaves execute isso e, em seguida, distribua o arquivoknown_hosts atualizado para o restante das máquinas.
Ou, como outros mencionaram, você pode desativar o StrictHostKeyChecking. Isso expõe você a ataques man-in-the-middle, embora isso possa não ser uma preocupação em seu ambiente.
Responder4
Talvez você queira salvar as chaves do host antes de reinstalar e restaurá-las posteriormente.
Alternativamente, você pode usar alguma ferramenta de gerenciamento de configuração comoMotor CFouFantochepara distribuir um documento oficial /etc/ssh/ssh_known_hosts
a todos os clientes do seu site. (OpenSSH consulta /etc/ssh/ssh_known_hosts
se não houver entrada correspondente em ~/.ssh/known_hosts
.)