Problema de conexão SSH com erro “Falha na verificação da chave do host…”

125

Eu posso me conectar a outra máquina Ubuntu na minha LAN via SSH. Em ambos os PCs, eu instalei o openssh-server mas de outro computador Ubuntu não consigo me conectar ao meu PC via SSH e recebi este erro:

  

A verificação da chave do host falhou ...

    
por Navid 28.05.2011 / 13:36

13 respostas

150

"Falha na verificação da chave do host" significa que a chave host do host remoto foi alterada.

O SSH armazena as chaves do host dos hosts remotos em ~/.ssh/known_hosts . Você pode editar esse arquivo de texto manualmente e remover a chave antiga (você pode ver o número da linha na mensagem de erro) ou usar

ssh-keygen -R hostname

(que aprendi com a resposta para É possível remover uma chave de host específica do arquivo known_hosts do SSH? ).

    
por elmicha 28.05.2011 / 15:19
93

Se você estiver executando em certas situações remotas / de script nas quais não tem acesso interativo ao prompt-to-add-hostkey, trabalhe de maneira semelhante:

$ ssh -o StrictHostKeyChecking=no user@something.example.com uptime

Aviso: permanentemente adicionado 'something.example.com, 10.11.12.13' (RSA) à lista de hosts conhecidos.

    
por MarkHu 24.07.2013 / 02:47
10

Às vezes, também há situações em que você está trabalhando no console serial e, em seguida, a verificação do comando acima no modo detalhado -v mostrará que /dev/tty não existe, enquanto isso ocorre.

ssh -v user@hostname

No caso acima, basta remover /dev/tty e criar um link simbólico de /dev/ttyS0 para /dev/tty .

rm /dev/tty
ln -s /dev/ttyS0 /dev/tty

Como alternativa, adicione id_rsa.pub ao local remoto, para que a senha não seja solicitada e você obtenha acesso de login.

    
por Peeyush 27.05.2012 / 15:01
8

No meu caso, isso foi causado por um problema do udev - não havia nenhum nó do dispositivo /dev/tty . A solução para mim foi apenas:

sudo mknod -m 666 /dev/tty c 5 0
    
por Mark 25.07.2011 / 22:28
3

Bem, simplesmente porque o segundo Ubuntu requer conexão por chave e não por senha.

Eu sugiro que você use sudo dpkg-reconfigure openssh-server no seu pc, e então ele deve funcionar corretamente. Ele irá redefinir a configuração para o openssh e deve retornar a uma autenticação de senha padrão.

A segunda possibilidade é que já existe uma chave para o seu outro Ubuntu no seu PC, e isso mudou, portanto, não sendo mais reconhecido. Nesse caso, você terá que editar o arquivo .ssh/authorized_keys para remover a linha problemática que identifica seu Ubuntu.

    
por MP0 28.05.2011 / 13:39
3

Este é um tópico antigo e acabei de encontrar esta resposta, apenas adicionarei o que fiz para resolver isso.

ssh-keygen -f "/home/USER/.ssh/known_hosts" -R HOSTNAME

Eu apenas olhei para a mensagem de erro que ele lançou para mim e ele disse para executar esse comando, a fim de removê-lo da lista de hosts. Depois disso fiz o seguinte:

ssh-copy-id HOSTNAME

Do que eu segui os prompts de lá até que eu era capaz de ssh no servidor.

    
por Hatem Jaber 15.04.2015 / 18:09
2

Isso significa que sua chave do host remoto foi alterada (pode ser uma alteração de senha do host),

Seu terminal sugeriu executar este comando como usuário root

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231

Você precisa remover esse nome de host da lista de hosts no seu pc / servidor. Copie esse comando sugerido e execute como usuário root.

$ sudo su                                                            // Login as a root user

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231   // Terminal suggested command execute here
Host [www.website.net]:4231 found: line 16 type ECDSA
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

$ exit                                                               // Exist from root user

$ sudo ssh root@www.website.net -p 4231                              // Try again

Espero que isso funcione.

    
por Jay Patel 14.08.2016 / 06:59
1

Você deve alterar sua chave desta maneira: A partir do seu erro, encontre qual chave do host foi alterada para exemplo: Chave ECDSA incorreta em / Users / username /.ssh / known_hosts: 5 disse 5ª chave alterada, então faça isso:

sed -i '5d' ~/.ssh/known_hosts

Aviso: você deve ser root ou ter privilégio para o sudo.

    
por Amir.A.G 13.03.2016 / 16:22
1

No terminal:

ssh -o StrictHostKeyChecking=No -i YourPublicKey.pem user@example.com uptime

A seguinte mensagem, ou similar, aparecerá:

Warning: Permanently added 'example.com, XX.XXX.XXX.XX' (ECDSA) to the list of known hosts.
 00:47:37 up 3 min,  0 users,  load average: 0.00, 0.00, 0.00

Em seguida, conecte-se ao seu EC2 normalmente:

ssh -i YourPublickey.pem user@example.com
    
por Vitor Abella 27.03.2017 / 02:50
1

você tem que colocar a chave rsa do host de destino no host de origem /home/user/.ssh/known_hosts executando isso no destino

ssh-keyscan -t rsa @targethost
    
por rob brennan 06.04.2017 / 17:42
0

pico ~/.ssh/known_hosts e exclua todas as linhas, depois basta se reconectar e você receberá uma nova chave.

    
O
por H0nsu 18.10.2012 / 08:26
0

Minha solução vem desta postagem do blog: A negociação do algoritmo falhou para o SSH Secure Shell Client

Você precisa modificar o arquivo da seguinte forma:

sudo nano /etc/ssh/sshd_config

E adicione o seguinte:

# Ciphers
Ciphers aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,arcfour
KexAlgorithms diffie-hellman-group1-sha1

Basicamente você tentou soluções diferentes até encontrar uma que possa resolver seu problema. Se as soluções acima não funcionarem, tente este. Se este não funcionar tão bem, por favor tente outros.

    
por Frank Puk 06.04.2017 / 19:01
0

Apenas desabilite a verificação estrita da chave do host em seu ~ / .ssh / config:

Host *
StrictHostKeyChecking no
    
por Timo 26.04.2018 / 17:27

Tags