Uma conexão segura com a internet não é apenas o ideal – é essencial. Na verdade, nós vamos ao ponto de dizer que é a prioridade número um para o seu site. O erro “Warning: Remote Host Identification Has Changed” protege sua conexão de certos ataques maliciosos, embora em alguns casos, você possa inadvertidamente causar o erro também.

O erro está relacionado com suas chaves do Secure Shell (SSH ) e o servidor “fingerprint” que um cliente irá verificar. Se o Secure Shell achar que há um problema, ele bloqueará o acesso ao seu servidor e lançará um erro. Mas você pode corrigir isso em alguns passos.

Nos próximos minutos, nós vamos mostrar a você como corrigir o erro “Warning: Remote Host Identification Has Changed” tanto para Windows quanto para Mac. Primeiro, porém, vamos lhe dar mais alguns detalhes sobre a mensagem de erro em si.

O que é “Warning: Remote Host Identification Has Changed”

Uma das formas mais seguras de se conectar a um servidor web é usar o SSH. É uma ferramenta de linha de comando que permite a você acessar uma rede insegura de forma segura. Considere-o como uma configuração do tipo “super-SFTP”, embora não seja uma comparação 1:1 na prática.

Você pode acessar seu site de quase qualquer lugar que você possa usar a internet, desde que você tenha as credenciais de login corretas. E mais, a maioria das máquinas MacOS e Linux tem um cliente SSH incorporado no Sistema Operacional (SO). Para Windows, você usará uma interface dedicada (e falaremos sobre isso com mais detalhes mais tarde).

Quanto ao erro “Warning: Remote Host Identification Has Changed” está relacionado com as verificações de segurança que seu cliente fará. Uma conexão SSH usa “chaves” dedicadas de pequenos arquivos armazenados em seu computador – como autenticação. É como um aperto de mão do Secure Sockets Layers (SSL), e na verdade, há algumas semelhanças de alto nível entre SSH e SSL.

Um aspecto com o qual as chaves ajudam é a fornecer uma impressão digital (fingerprint) permanente de seu servidor de hospedagem. Isto garantirá que a conexão seja precisa e que você não esteja sujeito a um ataque “machine-in-the-middle”.

Se o cliente achar que essas impressões digitais são diferentes do que ele entende ser correto, você receberá o erro “Warning: Remote Host Identification Has Changed” no momento do login:

[user@hostname ~]$ ssh root@user

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@ 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 a host key has just been changed.

The fingerprint for the RSA key sent by the remote host is

xx:xx:xx.

Please contact your system administrator.

Add correct host key in /home/hostname /.ssh/known_hosts to get rid of this message.

Offending RSA key in /var/lib/sss/pubconf/known_hosts:4

RSA host key for user has changed and you have requested strict checking.

Host key verification failed.

Conforme os erros vão ocorrendo, isto é detalhado e claro – ele diz a você o que aconteceu, uma razão potencial para o porquê, e como você pode corrigir.

No entanto, há um aspecto que podemos tocar um pouco mais antes de mostrar a você como corrigir o erro “Warning: Remote Host Identification Has Changed”.

Como o arquivo known_hosts ajuda a autenticação SSH

Você notará que a mensagem de erro faz referência a um known_hosts conhecido. O nome deve dar a você uma pista sobre o que ele contém, mas para maior clareza, é uma lista de hosts remotos SSH conhecidos pelo computador. Ele é usado como um arquivo cliente de referência para o processo de autenticação.

Quando você se conecta a um servidor pela primeira vez, você frequentemente recebe um pedido de confirmação através de sua interface, perguntando se você quer se conectar. Se assim for, esta impressão digital (fingerprint) se tornará parte do seu arquivo known_hosts.

É claro, se a impressão digital (fingerprint) for diferente do que está no arquivo known_hosts, isso pode indicar que um usuário malicioso está visando você. Em outros casos, você já pode saber porque há uma diferença, apesar de que vale a pena estar vigilante independentemente.

Como corrigir o erro “Warning: Remote Host Identification Has Changed” (no Windows e Mac)

Você pode trabalhar para corrigir o erro “Warning: Remote Host Identification Has Changed” tanto para Windows quanto para macOS. No entanto, você tem mais flexibilidade para fazer isso no Mac.

Nós cobriremos muitas das maneiras que você pode fazer as coisas certas novamente, começando com o Windows.

1. Windows

É importante notar que as máquinas Windows podem não ter um known_hosts. Entretanto, se você usar o cliente OpenSSH, um arquivo. Para encontrá-lo, abra a barra de busca do Windows, e navegue até sua pasta de usuário com o comando %USERPROFILE%.

Isto abrirá o diretório dentro do File Explorer. Haverá também uma pasta .ssh dentro:

O Windows File Explorer.
O Windows File Explorer.

O arquivo que nós queremos nesta pasta é known_hosts. Você pode abrir este arquivo com o Notepad (ou seu editor de texto favorito). Dentro estará uma lista de chaves:

O arquivo Windows known_hosts
O arquivo Windows known_hosts

Aqui, você pode apagar a chave que está causando o problema, e então salvar novamente o arquivo.

Alguns usuários podem preferir o cliente PuTTY. As chaves se encontram no Registro, embora elas tenham o mesmo propósito do OpenSSH.

Você vai querer abrir o Editor do Registro do Windows (também conhecido como “regedit”). Você pode fazer isso da maneira que você estiver confortável, mas a maneira mais rápida é digitar o nome do aplicativo na barra de busca do Window:

O link do Editor de Registro no menu Iniciar do Windows.
O link do Editor de Registro no menu Iniciar do Windows.

Aqui, procure o seguinte destino dentro do regedit:

HKEY_CURRENT_USER/Software/SimonTatham/PuTTY/SshHostKeys/

Você verá aqui uma lista de entradas relacionadas com as conexões salvas em seu computador. Seu trabalho é apagar o que quer que esteja causando um problema:

Apagar uma chave de registro no regedit.
Apagar uma chave de registro no regedit.

Uma vez que você clique no botão Delete, você também precisará confirmar que deseja remover a chave:

O diálogo Confirmar Valor Apagar
O diálogo Confirmar Valor Apagar

Clicando em Sim aqui significa que a chave desaparecerá de vez, e você não deve receber o erro “Warning: Remote Host Identification Has Changed”.

2. Mac

O Mac tem algumas maneiras de corrigir o erro “Warning: Remote Host Identification Has Changed” – seja através de um aplicativo premium como o SSH Config Editor ou o Terminal. Os resultados serão os mesmos, então aconselhamos que você escolha a opção que for mais confortável (e de melhor custo-benefício).

Nossa abordagem preferida é acessar o arquivo dentro de uma janela do Terminal (ou iTerm2 se você usar esse aplicativo), e também abri-lo com um editor Nano ou Vim dedicado. Isto porque ele é acessível a todos e fácil de usar, independentemente do seu nível de experiência.

Aqui, nós vamos usar Nano. Primeiro, abra seu Terminal usando o processo que for mais confortável:

Abrindo o Terminal a partir do Spotlight.
Abrindo o Terminal a partir do Spotlight.

A partir daqui, execute o comando nano ~/.ssh/known_hosts em sua janela. Isto abrirá uma nova instância Nano e exibirá as chaves dentro do seu arquivo known_hosts:

O editor Nano com o arquivo known_hosts aberto.
O editor Nano com o arquivo known_hosts aberto.

Você deve apagar a chave causando o erro “Warning: Remote Host Identification Has Changed”, então salve suas alterações.

Você também pode querer apagar todo o arquivo known_hosts, especialmente se você usar o SSH apenas para um ou dois sites. Para fazer isso, você pode rodar rm .ssh/known_hosts em uma janela do Terminal.

Há mais um método para alterar o arquivo known_hosts no Mac: usando o utilitário ssh-keygen a partir da linha de comando. Isto é ótimo se você não quiser escavar no arquivo em si, ou se você quiser trabalhar com apenas um site ou chave.

Para conseguir isso, abra uma janela do Terminal e execute ssh-keygen, seguido pelo nome da máquina do seu servidor. Por exemplo:

ssh-keygen -R server.example.com

Isto não lhe perguntará se você quer apagar as linhas especificadas, então certifique-se de que você está removendo as linhas certas antes de prosseguir:

Usando ssh-keygen para apagar do arquivo known_hosts.
Usando ssh-keygen para apagar do arquivo known_hosts.

Uma vez feito isso, você não deve receber o erro “Warning: Remote Host Identification Has Changed”.

Resumo

Segurança Web não se trata apenas de instalar plugins e criar uma senha forte. As conexões que você usa para entrar nos servidores precisam de sua máxima atenção. Se você não quer estar sujeito a um ataque machine-in-the-middle, você vai querer usar o acesso SSH quando você entrar no sistema.

No entanto, o sistema funciona quase bem demais. Você pode receber o erro “Warning: Remote host identification has changed” por alguns motivos, e alguns são inocentes.

Independentemente disso, você pode corrigir o erro rapidamente através de um prompt de comando ou terminal, usando alguns comandos.