Por que tenho duas entradas por servidor no arquivo known_hosts?

9

No meu mac, eu tenho 1 entrada por servidor no ~/.ssh/known_hostsarquivo, no Ubuntu eu notei que existem duas criadas por servidor. Por que é que?

O formato é:

|1|wwwwwwwwwwwwwww=|wwwwwwwwww= ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=
|1|vvvvvvvvvvvvvvv=|vvvvvvvvvv= ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=

Nas duas entradas, a primeira seção antes de ecdsa-sha2-nistp256 é diferente. Depois do ecdsa-sha2-nistp256, é o mesmo (chave do pub que eu imagino).

Eu ssh no servidor A e, a partir daí, ssh no servidor B. Não adiciono entradas manualmente, vejo o aviso do ubuntu e permito que seja adicionado ao arquivo known_hosts.

Eu apaguei o arquivo known_hosts para este teste.

Tenho uma dúvida razoável de que a entrada extra é para o endereço ipv6, mesmo que eu não o tenha usado para conectar. O ubuntu o adiciona automaticamente, se disponível?


fonte
Como você está adicionando entradas ao arquivo? Você talvez faz login no servidor com vários usuários? Por favor edite sua pergunta e inclua os comandos específicos utilizados para criar as entradas.
terdon
@terdon Não estou adicionando entradas manualmente. Eu simplesmente ssh no servidor, verifico o aviso e o aceito.
Se eu entendo a página de manual do ssh , a seção "SSH_KNOWN_HOSTS FILE FORMAT" está correta, o primeiro valor é o nome do host com hash ... mas isso é ainda mais confuso, pois eles não devem ter a mesma chave de pub.
Pythonic
@PythoNic Também li isso e fiquei mais confuso. Mas, estou testando ssh do servidor remoto. Então, basicamente, ssh no servidor A e ssh de lá para o servidor B. Essa poderia ser a causa? Ou poderia ser entrada ipv6? Estou realmente confuso.

Respostas:

11

Você tem duas entradas porque uma é por domínio e a outra por endereço IP, portanto, seu exemplo:

|1|wwwwwwwwwwwwwww=|wwwwwwwwww= ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=
|1|vvvvvvvvvvvvvvv=|vvvvvvvvvv= ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=

pode, com efeito, ler:

[example.com] ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=
[192.168.6.8] ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=

Se você desabilitar o hash do host conhecido (adicionar HashKnownHosts noao seu arquivo ~ / .ssh / config), poderá ver o que está acontecendo, mas em um arquivo known_host sem hash, o domínio e o endereço IP podem aparecer na mesma linha, para que ficaria assim:

[example.com],[192.168.6.8] ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=

Há um pouco mais de discussão sobre o formato de arquivo known_hosts aqui.

Peter Ryan
fonte
1

Você deve ter uma chave para cada servidor ao qual você se conectou. Você se conectou a dois servidores em vários momentos ou a chave no seu servidor único foi alterada.

Quando você se conecta pela primeira vez a um servidor ssh, é perguntado se deseja adicionar a chave aos hosts conhecidos.

Parece algo assim:

insira a descrição da imagem aqui

Então você aceitou as chaves com seu cliente em algum momento.

Com cada conexão subsequente, quando você se conecta ao servidor, as chaves são comparadas e você recebe um aviso se elas forem alteradas.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ AVISO: A IDENTIFICAÇÃO DO HOSPITAL REMOTO MUDOU! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ É POSSÍVEL QUE ALGUÉM ESTÁ FAZENDO ALGO DESAGRADÁVEL! Alguém pode estar te espionando agora (ataque homem-no-meio)! Também é possível que a chave do host RSA tenha sido alterada. A impressão digital da chave RSA enviada pelo host remoto é f2: 92: 1d: da: 81: 2a: d7: 16: 0a: 48: f0: 43: 20: 1c: f4: b5. Entre em contato com o administrador do sistema. Adicione a chave do host correta em /home/bodhi/.ssh/known_hosts para se livrar dessa mensagem. Chave incorreta em /home/bodhi/.ssh/known_hosts:1

Consulte: http://bodhizazen.com/Tutorials/SSH_overview#Security

Pantera
fonte
1
Eu removi o arquivo known_hosts. Eu ssh no servidor. Eu vejo o aviso e permito que ele adicione entrada a known_hosts. Cria duas entradas.
Cole o arquivo hosts conhecidos e faça uma captura de tela ou mostre sua saída.
Panther
Poderia ser o endereço ipv6?
Não sei dizer pelo pouco que você postou.
Panther