Como remover a verificação de chave RSA estrita no SSH e qual é o problema aqui?

36

Eu tenho um servidor Linux que sempre que me conecto, mostra a mensagem que mudou a chave do host SSH:

$ ssh root@host1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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 93:a2:1b:1c:5f:3e:68:47:bf:79:56:52:f0:ec:03:6b. Please contact your system administrator. Add correct host key in /home/emerson/.ssh/known_hosts to get rid of this message. Offending key in /home/emerson/.ssh/known_hosts:377

RSA host key for host1 has changed and you have requested strict checking. Host key verification failed.

Ele me mantém por alguns segundos conectados e depois fecha a conexão.

host1:~/.ssh # Read from remote host host1: Connection reset by peer Connection to host1 closed.

Alguém sabe o que está acontecendo e o que eu poderia fazer para resolver esse problema?

    
por setatakahashi 08.05.2009 / 13:34

6 respostas

61

Por favor, não apague todo o arquivo known_hosts como recomendado por algumas pessoas, isso anula totalmente o ponto do aviso. É um recurso de segurança para avisá-lo que um homem no ataque do meio pode ter acontecido.

Sugiro que você identifique por que acha que algo mudou, muito provavelmente uma atualização do SSH alterou as chaves de criptografia devido a uma possível falha de segurança. Você pode então limpar essa linha específica do seu arquivo known_hosts:

sed -i 377d ~/.ssh/known_hosts

Este d elimina a linha 377 como mostrado após os dois pontos no aviso:

/home/emerson/.ssh/known_hosts:377

Como alternativa, você pode remover a chave relevante fazendo o seguinte

ssh-keygen -R 127.0.0.1 (obviously replace with the server's IP)

Por favor, NÃO purgar o arquivo inteiro e garantir que esta é realmente a máquina que você deseja se conectar antes de limpar a chave específica.

    
por 08.05.2009 / 13:47
20

Acho que, embora algumas das respostas aqui abordem o curso de ação recomendado na pergunta do OP, ele não responde totalmente à pergunta.

A pergunta afirma "Como remover a verificação de chave RSA estrita no SSH e qual é o problema aqui?"

O problema aqui é, como aconselhado por alguns outros, uma mudança no host provavelmente devido à reinstalação do servidor (cenário mais comum). E a solução recomendada é remover a chave incorreta do arquivo .ssh / authorized_keys com um sed inline.

No entanto, eu não vi nenhuma resposta abordar a parte específica da pergunta " Como remover a verificação de chave RSA estrita no SSH ".

Você pode remover a verificação do StrictHostKey no arquivo de configuração do ssh, normalmente armazenado em ~/.ssh/config .

Um exemplo de bloco de host é fornecido abaixo:

Host 101
  HostName yourip|hostname
  User youruserid
  IdentityFile /path/to/keyfile
  Port 22
  StrictHostKeyChecking no

A linha especificamente adicionada é a última StrictHostKeyChecking no , que faz exatamente isso. Dependendo do cenário específico, isso pode ser útil para você, como executar vários contêineres virtualizados em um servidor dedicado, em apenas alguns ips, parar e iniciar outra instância no mesmo ip.

    
por 15.08.2013 / 18:38
10

Outra maneira de remover o StrictHostKeyChecking, quando você só precisa fazer isso para um único servidor:

ssh <server> -o StrictHostKeyChecking=no
    
por 10.10.2013 / 18:17
5

Primeiro de tudo, esta é a sua máquina? Você sabiamente mudou as chaves do host? Se não, eu ficaria muito preocupado se algo alterasse esses dados.

Em segundo lugar, aumente a depuração do ssh,

ssh -vvv user@host

e veja o que isso lhe diz, tente também procurar, / var / log / secure e / var / log / messages no servidor que você está tentando conectar para dicas, o sshd fornece boas mensagens de erro.

Em terceiro lugar, esta máquina está conectada à internet? Você deveria estar realmente permitindo logins root?

    
por 09.05.2009 / 16:51
3

Você está recebendo isso porque algo mudou (como novo NIC, novo IP, alteração no software do servidor, etc.). O foco de segurança tem um bom artigo sobre proteção de chave de host SSH .

Basta remover a chave (usando SFTP ou similar) do servidor, editando o arquivo $HOME/.ssh/known_hosts e aceitando o novo na próxima conexão.

Sua conexão pode estar caindo devido à configuração StrictHostKeyChecking. Consulte este tópico para ver um problema semelhante.

    
por 08.05.2009 / 13:41
2

Como o 'host' [amplamente definido, pode ser tudo desde reinstalação / inicialização múltipla até um computador totalmente diferente com um endereço IP com o qual você se conectou antes, por exemplo] parece que o cliente ssh mudou, é dando-lhe o erro.

Não é necessário desativar a verificação rigorosa, nem a exclusão total de chaves salvas é sensata.

É bem possível ter duas chaves diferentes listadas em known_hosts para um nome de host ou endereço IP específico; dando-lhe 2 alternativas de acordo com se você acha que pode precisar da chave 'antiga' que está atualmente armazenada em known_hosts

Exclua a chave específica a que se refere, em l377 de known_hosts para o OP, ou mantenha ambos

A maneira mais simples de manter ambos, evitando a exclusão de chaves em known_hosts, é

  1. Edite known_hosts para adicionar # no início da entrada "antiga" mencionada em known_hosts [@ l377] temporariamente
  2. Conecte [ssh ao host], concorde com o aviso para adicionar a nova chave "automaticamente"
  3. Em seguida, edite novamente o arquivo known_hosts para remover o #

mais respostas em "Incluir chave de host correta em known_hosts" / várias chaves de host ssh por nome de host?

    
por 05.06.2015 / 15:26