Eu construí várias máquinas virtuais durante as últimas semanas. O problema é que isso .ssh/known_hosts
me dá o homem no meio do aviso. Isso acontece porque outra impressão digital está associada ao IP da máquina virtual.
No .ssh/known_hosts
arquivo, no entanto, não encontro o registro relacionado ao IP, apenas duas seqüências bizarras e do tipo chave e "ssh-rsa".
Alguém tem alguma idéia sobre como remover a chave antiga known_hosts
?
ssh
hosts
openssh
man-in-the-middle
Adam Matan
fonte
fonte
HashKnownHosts yes
configurado.Respostas:
Modificará o arquivo ~ / .ssh / known_hosts: 6, removendo a 6ª linha.
Na minha opinião, usar
ssh-keygen -R
é uma solução melhor para um usuário avançado do openssh, enquanto o administrador regular do Linux faria melhor em manter suas habilidades sed novas usando o método acima.fonte
/etc/sudoers
semvisudo
. Se você quiser aprimorar suassed
habilidades, vá em frente e faça isso sem bagunçar o sistema.ssh-keygen -R
esed -i {line}d
é bastante "oficial", e ambos funcionarão no futuro próximo. O Util ssh-keygen permite a remoção por número de linha, ambos são perfeitamente aceitáveis (porque, geralmente, os números de linha são mais fáceis de lidar e menos propensos a erros do que lidar com os nomes de host dos data centers modernos).man ssh-keygen
mencionassh-keygen -R hostname
que você acabou de dizerssh-keygen -R
sem nome de host especificado e não explicou o que quer dizer com isso.A solução mais simples é:
O ssh recriará o arquivo novamente, mas você perderá a verificação de chaves para outros hosts!
Ou você pode usar:
Ou a mensagem ssh "man-in-the-middle" deve indicar qual linha do arquivo known_hosts tem a impressão digital ofensiva. Edite o arquivo, pule para essa linha e exclua-o.
fonte
ssh-keygen -R hostname
vai funcionar também.ssh-keygen
opção foi adicionada por causa de um comentário, mas sem explicação. Não acho que essa resposta mereça muitos votos positivos.Existe um switch ssh-keygen (
-R
) para isso.man ssh-keygen
lê:fonte
[localhost]:port
, usando os colchetes, porque eu usei uma porta personalizada, eu acho = /. Como outros já disseram, eu também usaria a abordagem de verificação de chave sem SSH para o desenvolvimento do meu sistema de teste / transitório.ssh-keyscan -H my.ssh.server.example.com >> ~/.ssh/known_hosts;
O aviso informará a linha exata no arquivo hosts conhecido.
Aqui está um exemplo:
Veja a
/home/user/.ssh/known_hosts:6
parte? Especifica o arquivo e o número da linha.fonte
Você precisa executar o seguinte comando para se livrar desse problema. Abra o terminal e digite o seguinte comando:
Para todos os exemplos abaixo, substitua o valor após -R
fonte
ssh-keygen -R
que qualquer outra resposta até o momento. Mostra por exemplo exatamente o que você pode escrever depois-R
. Portanto, essa resposta vale a pena, mesmo que não seja uma resposta totalmente nova.Você também pode instruir o ssh para não verificar o arquivo known_hosts usando os sinalizadores UserKnownHostsFile e StrictHostKeyChecking.
Por exemplo:
Para facilitar o uso, você pode também usar o seguinte:
Agora você pode usar negrito sempre que tiver certeza de que confia no certificado do servidor.
fonte
~/.ssh/known_hosts
-se atualizado? Por que não seguir em frente e usartelnet
? "sempre que você tiver certeza" - se você tiver certeza, não terá idéia do que é um ataque MITM e provavelmente deverá gastar algum tempo lendo alguma boa literatura.Todas as respostas são boas, mas para o verdadeiro SSH pro, faltam informações sobre como remover a assinatura ssh com o número da porta.
Comando de remoção de assinatura de host SSH simples:
Remoção de chave ssh complexa, por exemplo, você se conecta ao ssh na porta 222 não padrão:
e você recebe um aviso e, para removê-lo, precisa usar o número da porta de dois pontos entre colchetes:
Espero que isso ajude para usuários de configuração não padrão.
fonte
Aqui está um método usando o editor Ex:
onde 6 é o número da sua linha mencionado na mensagem de aviso. Como este:
Em geral, é aconselhável usar
ex
para editar os arquivos de maneira não interativa , em vez desed
, o que é mais um itorador S tream ED e seu-i
parâmetro, que é uma extensão não padrão do FreeBSD.fonte
A entrada para o nome do host ou ip deve estar na primeira coluna. O aviso também deve listar um número de linha onde está a chave incorreta.
fonte
Você também pode remover uma única linha de hosts conhecidos com, por exemplo, rmknownhost 111 (111 é a linha a ser removida):
Salve isso como
rmknownhost
em uma pasta do seuPATH
.fonte
sshdel() { sed -i "${@}d" ~/.ssh/known_hosts; }
e chame-o comsshdel [line number]
. sem rubi, sem binário, sem preocupações.É um arquivo de texto. Você pode editar facilmente com vi (m) e simplesmente excluir a linha em questão (dd) e salvar o arquivo (wq). Mas se houver um comando específico para remover um host, esse provavelmente será o método mais seguro.
fonte