Eu tenho algumas caixas de nuvem que alteram seus IP frequentemente.
Eu ssh usando o nome do host, mas tenho que editar o arquivo known_hosts toda vez que o servidor iniciar devido a esta mensagem de erro:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is…
Além de qualquer risco de segurança associado ao que eu quero fazer, existe uma maneira de ignorar esse erro ou substituir automaticamente o arquivo known_hosts automaticamente, de modo que nem sempre eu mesmo precise editá-lo?
ssh
bash
known-hosts
fingerprint
coneybeare
fonte
fonte
Adição: você pode tentar apenas desativar a verificação CheckHostIP para esse nome:
fonte
Muitas das respostas aqui funcionarão - mas tecnicamente são soluções alternativas. OpenSSH já tem um recurso interno com isso em mente:
HostKeyAlias
.No seu arquivo .ssh / config, adicione
HostKeyAlias <alias>
a uma configuração de host:Com isso, a conexão com o servidor
myserver.example.com
não usará o nome do host ou o endereço IP para a referência local - sempre usará apenas o HostKeyAlias fornecido ao se conectar a esse servidor. Para mim, faz sentido usar o nome do host - mas é claro que você pode usar qualquer apelido que desejar.As configurações típicas para hosts dinâmicos são as seguintes:
Isso também pode ser usado em alguns cenários obscuros, nos quais você sabe que vários servidores têm as mesmas chaves de host (geralmente esse não deve ser o caso). Isso impediria entradas duplicadas. No futuro, se as chaves mudarem legitimamente, você não precisará substituir / excluir várias entradas. Apenas um. Os servidores Gitlab Geo são um bom exemplo disso.
Em relação à limpeza do arquivo known_hosts, sugiro examinar outras perguntas / respostas especificamente relacionadas à manutenção / remoção de entradas antigas de known_hosts. Por exemplo, consulte Como gerenciar meu arquivo .ssh / known_hosts ; Estou especialmente impressionado com a resposta de user1953828, embora perceba que ainda não há muitos votos positivos. :)
fonte
Eu uso essas opções duvidosas para solucionar esse problema. (A chave pública do meu host é regenerada com bastante frequência. Portanto, isso remove a verificação de IP e chave)
Você também pode usar isso se a chave permanecer a mesma, mas o IP mudar:
fonte
Você pode definir StrictHostKeyChecking = no na configuração do seu cliente ssh (ou seja, o arquivo ~ / ssh / config na máquina da qual você se conecta), para ignorar o aviso.
fonte
Você pode colocar
CheckHostIP no
no seu~/.ssh/config
arquivo, mas isso deixa você aberto a ataques de falsificação. Se você não estiver preocupado com isso, essa configuração deve desativar aknown_hosts
verificação.fonte
Evito adicionar as impressões digitais ao meu
known_hosts
arquivo ao conectar-me a máquinas transitórias da AWS. Eu uso um comando comopara se conectar a eles. Ele não perguntará se você deseja adicionar a máquina “à lista de hosts conhecidos”. Substitua
10.0.0.5
pelo endereço IP da sua máquina esecret.pem
pelo caminho completo da sua chave Ssh. Você ainda receberá um aviso de que o10.0.0.5
item foi adicionado, mas realmente desapareceu/dev/null
. Faço isso com frequência suficiente para definir um alias no meu~/.profile
Reservo
ssh [email protected]
comandos de tipo para máquinas onde tive o problema de verificar a impressão digital.fonte
Torne conhecidos_hosts somente leitura.
fonte