Estou tentando configurar o SSH sem senha em um servidor Ubuntu ssh-copy-id myuser@myserver
, mas estou recebendo o erro:
Aviso: a chave do host ECDSA para 'myserver' difere da chave do endereço IP '192.168.1.123'
O que está causando isso e como corrigi-lo? Tentei excluir o .ssh
diretório na máquina remota e executar ssh-keygen -R "myserver"
localmente, mas isso não resolve o erro.
ssh
security
ubuntu-server
ssh-keys
Cerin
fonte
fonte
The ECDSA host key for server has changed
. Meu caminho é remover a seqüência de cache relacionada ao domínio em~/.ssh/known_hosts
. Então o ssh funciona.Respostas:
Remova a chave
192.168.1.123
em cache da máquina local:fonte
ssh-keyscan -t ecdsa my.server.domain >> ~/.ssh/known_hosts
depois que você não precisa verificar a nova chave na primeira conexão ao host.No meu caso
ssh-keygen -R ...
, não consertei o aviso. Eu tinha informações extras como esta:Simplesmente editei
~/.ssh/known_hosts
e excluí manualmente a linha 8 (a "chave incorreta"). Tentei reconectar, o host foi adicionado permanentemente e tudo ficou bem depois disso!fonte
sed -e '8d' /home/myuser/.ssh/known_hosts
, substituindo o número da linha8
e o nome do arquivo pelos exibidos no seu sistema.known_hosts:8
refere a um valor indexado a zero ou não. É bom saber que é um mapeamento 1: 1 ...ssh-keygen -R [hostname]:2022
~/.ssh/known_hosts
, recebo a mensagem de que a autenticidade não pode ser estabelecida e "Tem certeza de que deseja continuar se conectando". Responder "sim" tenta e falha na conexão. Se eu tentar conectar pela segunda vez, recebo o mesmo erro de chave do host ECDSA com o qual comecei.Eu faço varreduras entre meus computadores da LAN e minhas duas contas de hospedagem na web, então resolvi todos os tipos de probabilidades e termina com o SSH, incluindo problemas de autenticação usando
ssh -v
para ver onde e o que deu errado.Tendo acabado de resolver esse problema e não estar satisfeito com as respostas, eu queria realmente saber "por que" ...
O gatilho para o meu caso é: instalação do novo sistema operacional do servidor no trabalho e após a instalação do pacote openssh-server, um novo conjunto de chaves do host foi gerado no servidor do trabalho. Anteriormente, todos os sistemas operacionais do meu servidor eram Ubuntu e, desta vez, foram alterados para o Debian (e eu suspeito que haja uma diferença diferenciada nas permissões).
Quando todos os sistemas operacionais eram Ubuntu e eu reinstala o sistema operacional de um servidor, no primeiro SSH nele, recebo esse tipo de aviso, que eu prefiro sobre o aviso silencioso acima!
Então eu abro ~/.ssh/known_hostsno computador iniciando o ssh, excluo essa linha, reconecto e isso acontece:
Esse pouco sobre: 11122 é o número da porta da qual eu direciono o SSH no firewall
Eu verifiquei os backups de um antigo servidor Ubuntu e fiz uma comparação com a minha nova instalação Debian:
Então, sim, provavelmente, o host começou a usar chaves ecdsa recentemente, que com base nas alterações do Ubuntu recentemente, eu culparia uma atualização. A mudança do Ubuntu para o SO Linux sólido como o qual eu contei é por que instalei o Debian desta vez.
Eu li um security.SE q / a no ecdsa e já removi essa linha do
sshd_config
meu novo servidor Debian. (e correuservice ssh restart
)fonte
ubuntu debian server
e você verá o que quero dizer.O prompt ocorre sempre, porque os endereços IP mudam o tempo todo ao usar o endereçamento dinâmico. Tente usar o IP estático para adicionar a chave apenas uma vez.
fonte
ssh-keygen -f "/root/.ssh/known_hosts" -R 192.168.1.123
Isso deve substituir as chaves existentes em known_hosts.old e criar uma nova. Esta solução funcionou para mim no mesmo cenário
fonte
Adicionei as seguintes linhas ao meu ~ / .ssh / config, desabilitando assim a verificação estrita do host para todos os endereços .local. (com alocação de endereço DHCP, os endereços IP das minhas máquinas locais estão sempre mudando)
Você ainda recebe o aviso, o que é bom para mim.
fonte
Você está usando o mesmo usuário para se conectar?
Se você estiver conectado a um PC local como o usuário John e conectado ao servidor B como o usuário Adolf @ B e tudo estiver OK, isso não significa que tudo estará bem se você estiver conectado ao PC local como o usuário Jane e se conectando ao servidor B como usuário Adolf @ B .
Se você deseja efetuar login no servidor B como usuário Beda do PC A sem senha, tente este comando, todos do PC A :
Este comando gera a chave e armazena a chave no arquivo. Deixe a senha vazia.
Este comando cria o diretório, se eles ainda não existirem. Caso contrário, não imprima uma mensagem de erro.
Este comando altera o diretório para o diretório inicial do usuário ./ssh.
Este comando imprime o arquivo id_rsa.pub (sua chave pública) em allowed_keys no servidor.
IMPORTANTE: Beda é o seu nome de usuário no servidor que você está conectando, B é o IP do seu servidor.
Agora, você pode se conectar ao servidor B sem uma senha ou senha:
fonte
A discussão aqui pode ajudar.
Essencialmente, você deseja remover as chaves RSA e ECDSA desse host e usá
ssh-keyscan
-las para colocá-las novamente em seuknown_hosts
arquivo de uma maneira que não cause esse conflito. Funcionou para mim quando tive o mesmo problema.fonte
Pergunta: O que está causando isso, ...?
Portanto, a chave do host do servidor ssh mudou. O que causou a mudança? É difícil dizer. Aqui estão alguns palpites:
Pergunta: ... e como faço para corrigi-lo?
Como outras pessoas já responderam, remova a chave do host ECDSA em cache do myserver que sua conta armazenou em cache.
fonte
Esse erro me incomodou por muito tempo. Por alguma razão, fez diferença se eu faria uma
ou
https://askubuntu.com/questions/87449/how-to-disable-strict-host-key-checking-in-ssh
então me indicou a opção de alterar o arquivo de configuração. Veja meu script https://askubuntu.com/a/949731/129227 lá para automatizar o processo.
fonte
CanonicalizeHostname
eCanonicalDomains
evitaria a remoção de verificação rigorosa e faria ssh considerar host e host.domain para ser mesmo.Corrigi isso em um Chromebook desinstalando e reinstalando o Secure Shell ... Funcionou como um encanto.
fonte
Veja como remover uma impressão digital de host conhecida (do
known_hosts
arquivo) em um Chrome OS:Encontre o índice da entrada do host incorreto na saída ssh quando a conexão falhar. Por exemplo, na linha abaixo do índice incorreto é 7 :
Abra o console JavaScript ( CTRL+ Shift+ J) da janela Secure Shell e digite o seguinte, substituindo
INDEX
pelo valor apropriado (por exemplo, 7 ):Esta solução foi emprestada do Blog de Leo Gaggl .
fonte