Como corrigir “Aviso: a identificação do host remoto foi alterada!”

Publicados: 2024-10-16
Índice
  • Compreendendo o aviso
  • Verifique a identidade do servidor
  • Solução 1: Remova a chave do host antigo manualmente (Windows, Mac, Ubuntu)
  • Solução 2: limpe todo o arquivoknown_hosts (Windows, Mac, Ubuntu)
  • Solução 3: Ignore temporariamente a verificação da chave do host (Windows, Mac, Ubuntu)
  • Solução 4: adicione a nova chave de host manualmente (Windows, Mac, Ubuntu)
  • Solução 5: verifique se há alterações de DNS ou endereço IP (Windows, Mac, Ubuntu)
  • Melhores práticas para evitar esse problema no futuro (Windows, Mac, Ubuntu)
  • Conclusão

Ao tentar se conectar a um servidor remoto usando SSH, você pode encontrar a mensagem de erro: “Aviso: a identificação do host remoto foi alterada!” . Esta mensagem é um recurso de segurança que o SSH usa para protegê-lo contra ataques man-in-the-middle, onde terceiros podem interceptar sua comunicação com o servidor.

Em termos simples, este aviso informa que a impressão digital do servidor (um identificador exclusivo armazenado em sua máquina local) não corresponde ao que o SSH registrou anteriormente. Pode ser uma alteração legítima, como a reinstalação do servidor ou a alteração do endereço IP, mas também pode sinalizar uma ameaça potencial à segurança. O SSH bloqueia a conexão para proteger seu sistema até que você verifique a autenticidade do servidor.

Neste artigo, veremos como resolver esse problema com segurança em sistemas Mac , Ubuntu (Linux) e Windows , garantindo que você possa continuar se conectando com segurança sem ignorar riscos potenciais.

Você pode estar interessado em ler: Como corrigir erro de permissão negada (Publickey)

Compreendendo o aviso

Por que o aviso aparece?

O SSH armazena uma impressão digital da chave do servidor remoto em um arquivo known_hosts na sua máquina local. Essa impressão digital é usada para verificar se você está se conectando ao mesmo servidor sempre que usa SSH. Se a impressão digital do servidor mudar, o SSH mostrará o aviso porque não pode ter certeza se a identidade do servidor mudou legitimamente ou se alguém está tentando interceptar sua conexão.

Cenários comuns para o aviso:

  • Reinstalação ou atualização do servidor: se o servidor tiver sido reinstalado, redefinido ou atualizado, ele poderá gerar uma nova chave SSH, que não corresponderá àquela armazenada em seu known_hosts .
  • Alteração do endereço IP: Se o endereço IP do servidor tiver sido alterado (por exemplo, devido à mudança para um novo provedor de hospedagem ou rede), o SSH poderá sinalizar isso como uma alteração suspeita.
  • Alterações de DNS: Se houver atualizações ou configurações incorretas nos registros DNS do servidor, o SSH poderá interpretar isso como um servidor diferente.
  • Alterações na configuração do servidor: às vezes, os administradores do servidor alteram a configuração da chave SSH, resultando em uma nova chave que não corresponde à anterior.
  • Ameaça potencial à segurança (ataque man-in-the-middle): O aviso pode ser um sinal de que alguém está tentando interceptar sua conexão com o servidor. Se não tiver certeza sobre as alterações, é essencial verificar a identidade do servidor antes de continuar.

A função do known_hosts :

O known_hosts é onde o SSH armazena informações sobre hosts remotos aos quais você se conectou anteriormente. O arquivo normalmente está localizado no diretório ~/.ssh/ no Mac e Ubuntu e, para usuários do PuTTY no Windows, ele armazena chaves de host no Registro do Windows.

Verifique a identidade do servidor

Antes de fazer qualquer alteração, resolva a mensagem “A identificação do host remoto foi alterada! ”Aviso, é crucial verificar se a identidade do servidor mudou legitimamente. Esta etapa garante que você não seja vítima de um ataque man-in-the-middle.

Por que você deve verificar primeiro a identidade do servidor

Ignorar esta etapa pode resultar na conexão a um servidor comprometido ou malicioso, o que pode colocar seus dados ou credenciais em risco. Sempre leve esse aviso a sério, especialmente se não tiver certeza sobre as alterações recentes no servidor.

Etapas para verificar a identidade do servidor:

  • Entre em contato com o administrador do servidor: se não for você quem mantém o servidor, entre em contato com o administrador ou provedor de hospedagem e pergunte se alguma alteração recente foi feita, como alteração de endereço IP, reinstalação do servidor ou regeneração de chave.
  • Compare a impressão digital da chave do host: Use o seguinte comando para verificar manualmente a chave do host do servidor:
     ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

    A saída mostrará a impressão digital da chave do host, que você pode comparar com aquela em seu known_hosts ou com a solicitação do administrador do servidor.

Solução 1: Remova a chave do host antigo manualmente (Windows, Mac, Ubuntu)

Para Mac e Ubuntu (Linux):

  1. Abra o terminal.
  2. Abra o arquivo ~/.ssh/known_hosts usando um editor de texto:
     nano ~/.ssh/known_hosts
  3. Procure a linha que corresponde ao nome do host ou endereço IP do servidor remoto.
  4. Exclua a linha que contém a chave do host antiga.
  5. Salve o arquivo e feche o editor de texto.
  6. Reconecte-se ao servidor usando SSH:
     ssh <username>@<hostname>

Remoção automatizada (Mac e Ubuntu):

Em vez de editar manualmente o known_hosts , você pode usar o seguinte comando para remover a chave do host antiga automaticamente:

 ssh-keygen -R <hostname or IP>

Para Windows (usando PuTTY):

  1. Abra o PuTTY .
  2. Pressione Windows + R , digite regedit e pressione Enter.
  3. Navegue até o caminho do registro:
     HKEY_CURRENT_USER\Software\Myusername\PuTTY\SshHostKeys
  4. Localize a entrada associada ao nome do host ou endereço IP do servidor remoto.
  5. Clique com o botão direito na entrada e selecione Excluir .
  6. Reconecte-se ao servidor no PuTTY e ele solicitará que você aceite a nova chave.

Para Windows (usando Git Bash):

  1. Abra o Git Bash .
  2. Execute o seguinte comando:
     ssh-keygen -R <hostname>
  3. O SSH solicitará que você aceite a nova chave na próxima vez que se conectar.

Solução 2: limpe todo o known_hosts (Windows, Mac, Ubuntu)

Para Mac e Ubuntu (Linux):

  1. Abra o terminal.
  2. Execute o seguinte comando para remover todo o known_hosts :
     rm ~/.ssh/known_hosts
  3. Reconecte-se ao servidor remoto usando SSH:
     ssh <username>@<hostname>

Para Windows (usando PuTTY):

  1. Abra o PuTTY .
  2. Pressione Windows + R , digite regedit e pressione Enter para abrir o Editor do Registro .
  3. Navegue para:
     HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
  4. Clique com o botão direito na pasta SshHostKeys e escolha Excluir . Isso removerá todas as chaves de host armazenadas.
  5. Reconecte-se ao servidor usando PuTTY e você será solicitado a aceitar a nova chave de host.

Para Windows (usando Git Bash):

  1. Abra o Git Bash .
  2. Remova o known_hosts executando:
     rm ~/.ssh/known_hosts
  3. Ao se reconectar ao servidor usando SSH, você será solicitado a aceitar a nova chave do host.

Solução 3: Ignore temporariamente a verificação da chave do host (Windows, Mac, Ubuntu)

Se você precisar se conectar ao servidor rapidamente e não tiver tempo para remover chaves de host antigas manualmente, poderá ignorar temporariamente a verificação da chave de host. Embora esse método funcione com dificuldade, não é recomendado para uso regular , pois pode expô-lo a possíveis riscos de segurança.

Para Mac e Ubuntu (Linux):

 ssh -o StrictHostKeyChecking=no <username>@<hostname>

Para Windows (usando Git Bash):

 ssh -o StrictHostKeyChecking=no <username>@<hostname>

Para Windows (usando PuTTY):

  1. Abra o PuTTY .
  2. Navegue até Conexão > SSH > Chaves de host .
  3. Desative a verificação da chave do host selecionando Sempre aceitar .
  4. Reconecte-se ao servidor sem verificar a chave do host.

Solução 4: adicione a nova chave de host manualmente (Windows, Mac, Ubuntu)

Para Mac e Ubuntu (Linux):

 ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

Para Windows (usando Git Bash):

 ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

Para Windows (usando PuTTY):

Infelizmente, PuTTY não possui um equivalente direto para ssh-keyscan . Para adicionar a chave do host manualmente, você precisará se conectar ao servidor e permitir que o PuTTY solicite a nova chave do host.

Solução 5: verifique se há alterações de DNS ou endereço IP (Windows, Mac, Ubuntu)

Para Mac e Ubuntu (Linux):

 nslookup <hostname>
 dig <hostname>

Para Windows (usando Git Bash):

 nslookup <hostname>
 dig <hostname>

Para Windows (usando PuTTY):

  1. Abra o prompt de comando ou PowerShell .
  2. Use o seguinte comando para verificar o DNS ou endereço IP:
     nslookup <hostname>
  3. Compare o endereço IP na saída com o que o PuTTY mostra no registro.
  4. Se o endereço IP mudou, exclua a chave do host antigo do registro do PuTTY navegando para:
     HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
  5. Reconecte-se via PuTTY e você será solicitado a aceitar a nova chave.

Melhores práticas para evitar esse problema no futuro (Windows, Mac, Ubuntu)

  • Use endereços IP estáticos: configure seus servidores com endereços IP estáticos para evitar alterações inesperadas que podem acionar o aviso.
  • Limpe ou atualize known_hosts : Revise e limpe periodicamente chaves de host antigas ou obsoletas.
  • Considere o uso de certificados SSH: Use certificados SSH para gerenciamento escalonável de chaves de host, reduzindo as chances desse aviso.
  • Monitore alterações de DNS ou IP: fique de olho nas alterações nos registros DNS ou endereços IP e atualize known_hosts de acordo.

Conclusão

A mensagem “A identificação do host remoto mudou!” warning é um recurso de segurança essencial no SSH que impede o acesso não autorizado, verificando a identidade de servidores remotos. Embora possa ser alarmante, é importante tomar as medidas necessárias para verificar a identidade do servidor antes de prosseguir com qualquer alteração.

Usando as soluções descritas neste artigo, você pode resolver o aviso com segurança, esteja você no Windows , Mac ou Ubuntu . Lembre-se sempre de verificar primeiro a autenticidade do servidor e depois escolher a solução que melhor se adapta à sua situação, seja removendo a chave de host antiga, limpando o known_hosts ou ignorando a verificação temporariamente.

Além disso, seguir as práticas recomendadas, como usar endereços IP estáticos, atualizar known_hosts e considerar certificados SSH, pode ajudar a minimizar a ocorrência desse problema no futuro.