Aviso "Identificação remota do host mudou" ao conectar-se através de SSH

21

Recebi esta mensagem hoje ao tentar fazer login no meu servidor. O que devo fazer? O que está acontecendo?

$ ssh 10.10.10.69
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
3d:1b:02:9e:b2:b8:f0:f7:c6:4f:94:96:f6:e3:c0:d1.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:8
RSA host key for 10.10.10.69 has changed and you have requested strict checking.Host key verification failed.
myusuf3
fonte
2
Como um aparte, você pode evitar o login local e remotamente como root e, em vez disso, usar usuários não privilegiados combinados com o sudo.
precisa

Respostas:

12

Você reinstalou recentemente o sistema operacional no seu servidor ou algo assim? Isso causaria isso.

Para corrigir isso: http://www.cyberciti.biz/faq/warning-remote-host-identification-has-changed-error-and-solution/

Solução 1: remova chaves usando ssh-keygen

Use a -Ropção para remover todas as chaves pertencentes ao nome do host de um arquivo known_hosts. Esta opção é útil para excluir hosts com hash. Se o seu nome de host remoto for server.example.com, digite:

$ ssh-keygen -R {server.name.com}
$ ssh-keygen -R {ssh.server.ip.address}
$ ssh-keygen -R {ssh.server.ip.address} -f {/path/to/known_hosts}
$ ssh-keygen -R server.example.com

Agora, você pode se conectar ao host sem problemas.

Solução 2: adicione a chave do host correta /home/user/.ssh/known_hosts

Não é necessário excluir o arquivo known_hosts inteiro, apenas a linha incorreta nesse arquivo. Por exemplo, se você tiver 3 servidores, a seguir.

myserver1.com,64.2.5.111 ssh-rsa  
 AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0EnGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0E
nGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94H+uv304/ZDz6xZb9ZWsdm+264qReImZzruAKxnwTo4dcHkgKXKHeefnBKyEvvp/2ExMV9WT5DVe1viVw
    k=
    myserver2.com,125.1.12.5 ssh-rsa
 AAAAB3NzaC1yc2EAAAABIwAAAQEAtDiERucsZzJGx/1kUNIOYhJbczbZHN2Z1gCnTjvO/0mO2R6KiQUP4hOdLppIUc9GNvlp1kGc3w7B9tREH6kghXFiBjrIn6VzUO4uwrnsMbnAnscD5EktgI7fG4ZcNUP 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGxQz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/IyI4NxHhhpltYZKW/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBf
    w=
    myserver3.com,125.2.1.15 ssh-rsa 
 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGx0lVkphVsvYD5hJzm0eKHv+oUXRT9v+QMIL+um/IyI4NxHhhpltYZKW
 as3533dka//sd33433////44632Z6MGnAazIviHBldxtGrFwvEnk82/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBfw==

Para excluir o segundo servidor (myserver.com), abra o arquivo:

# vi +2 .ssh/known_hosts

E pressione o comando dd para excluir a linha. Salve e feche o arquivo. Ou use o seguinte

$ vi ~/.ssh/known_hosts

Agora vá para a linha 2, digite o seguinte comando

:2

Agora exclua a linha com dd e saia:

dd
:wq

Ou você pode usar o comando sed da seguinte maneira para excluir a chave incorreta na linha # 44:

$ sed -i 44d ~/.ssh/known_hosts

Solução 3: Apenas exclua o arquivo known_hosts Se você tiver apenas um servidor ssh

$ cd
$ rm .ssh/known_hosts
$ ssh ras.mydomain.com

Tente conectar-se ao ssh novamente
Agora você deve conseguir conectar seu servidor via ssh:

ssh username@server-ip-here
ssh [email protected]

Em seguida, você receberá um novo prompt para adicionar a chave da ~/.ssh/known_hostsseguinte maneira:

The authenticity of host '10.86.115.66 ()' can't be established.
ECDSA key fingerprint is 4e:10:42:39:53:85:7f:89:89:dc:89:84:8d:79:e7:ed.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.86.115.66' (ECDSA) to the list of known hosts.
Isaías
fonte
9
Note que se você não mudar acolhimento chaves SSH do seu servidor, você deve não substituir a sua cópia da chave de host, pois pode ser um sinal de que alguém está tentando subverter as suas comunicações através da realização de um ataque man-in-the-middle.
Kees Cozinhe
7

Pelo que sei, todas essas respostas são sobre suprimir o aviso, em vez de lidar com ele. Em resumo, o aviso está dizendo que o servidor não parece mais o que era; consulte https://en.wikipedia.org/wiki/Man_in_the_middle_attack para saber por que isso pode ser um perigo.

Leia man ssh, especialmente esta seção:

VERIFICANDO AS CHAVES DO HOST

Ao conectar-se a um servidor pela primeira vez, uma impressão digital da chave pública do servidor é apresentada ao usuário (a menos que a opção StrictHostKeyChecking tenha sido desativada). As impressões digitais podem ser determinadas usando ssh-keygen (1) :

   $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

Para estar do lado seguro, você (ou alguém em quem confia) deve executar esse comando primeiro no servidor ao qual está se conectando. Ele fornecerá uma impressão digital parecida com a fornecida no aviso da pergunta. Obviamente, muitas vezes você não tem essas informações, mas se tiver motivos para suspeitar que algo está acontecendo, executar esse comando é a maneira de verificar se a assinatura do servidor realmente mudou ou se há algo suspeito acontecendo.

desenfreado
fonte
11
Use isso se o seu host fornecer uma impressão digital sha256 em vez de um hash md5. ssh -o FingerprintHash=md5 example.org
Declan McKenna
11
Mais sobre FingerprintHash: superuser.com/questions/929566/... (. Ie sha256 deve ser preferido, mas você pode não saber que valor se você não tiver atualizado o suficiente recentemente)
unhammer
2

Eu enfrentei o mesmo problema e, se você não deseja excluir o known_hostsarquivo inteiro , poderá executar o seguinte comando:

ssh-keygen -R 10.10.10.69

Não há problema em excluir os known_hosts. Você só precisará adicionar cada servidor ao qual se conectar, à lista sempre que se conectar a eles. Também pode estragar seus scripts, porque os hosts ainda não são confiáveis. O alerta ocorre quando a assinatura do host (o computador que você está tentando conectar para gerar novas chaves, geralmente devido a uma reinstalação ou rotação de chaves).

theTuxRacer
fonte
0

Se você acredita que esse aviso é falso positivo, é possível excluir seu / root / ssh / known_hosts para iniciar uma nova verificação.

Ta Coen
fonte
3
Por favor, não faça isso, você perderá os outros hosts conhecidos. Em vez disso, se você tiver certeza de que é um falso positivo, exclua a linha específica: "known_hosts: 8" linha 8 nesse caso.
Roger Light
0

Se você reinstalou recentemente o servidor ou alterou a chave do host, provavelmente é seguro remover a linha 8 do seu arquivo ~ / .ssh / known_hosts e adicionar novamente o servidor (adicionando ssh'ing a ele e respondendo "yes "quando solicita a verificação da chave)

elzapp
fonte
0

Como seu servidor está em uma rede local, você pode estar bastante confiante.

Se você reinstalou o sistema, isso é normal, mas em vez de remover o arquivo known_hosts, recomendo que você faça echo "" > ~/.ssh/known_hosts

Popinou
fonte
As pessoas ainda podem fazer truques em uma rede local. As redes empresariais ou escolares podem ter muito espaço para não serem confiáveis.
Azendale
0

O ssh -q também faz esse truque.

Habitual
fonte
0

Copie esta linha, mas insira o nome de usuário e o nome do host / IP para usere remote-server:

ssh-keygen -f "/home/user/.ssh/known_hosts" -R remote-server

Por exemplo:

ssh-keygen -f "/home/dev1/.ssh/known_hosts" -R 192.168.199.108

E cole-o no seu terminal local e execute-o. Isso funcionou para mim.

dheerendra
fonte
0

No nó do cliente em que você está emitindo o ssh,

vi ~/.ssh/known_hosts

Exclua todas as linhas que começam com endereços IP que estão na mesma rede que o IP no qual você está tentando conectar. Isso forçará o nó do cliente a adicionar permanentemente (ECDSA) à lista de hosts conhecidos.

Anthony Awuley
fonte