Verifica a presença de um nome de host sob a porta customizada em known_hosts

5

Eu preciso adicionar uma verificação se o nome do host já estiver presente no arquivo known_hosts.

Normalmente eu faria algo assim:

ssh-keygen -H -F hostname

No entanto, isso não parece funcionar para mim neste caso específico. Eu me conecto ao host usando a porta 2202, assim:

ssh user@myhost -p 2102

Pedi para adicionar o nome do host a known_hosts, digo sim. Depois disso eu corro "ssh-keygen -H -F myhost" mas recebo resultado vazio. Para piorar a situação, o known_hosts é hash.

Isso funciona perfeitamente com a porta 22, então se eu fizer o login em "ssh user @ myotherhost", salve o host conhecido e execute "ssh-keygen -H -F myotherhost" Eu recebo a linha exata do arquivo.

Então, como posso ajustar o comando para trabalhar com a porta 2102?

    
por deimos 05.04.2016 / 17:13

1 resposta

4

Você pode usar este formato: [hostname]:2121 , como é armazenado no arquivo known_hosts (observe, você precisa usar os colchetes!):

ssh-keygen -H -F "[hostname]:2121"

Prova de conceito (transcrição do meu caso de teste mínimo):

$ echo "[hostname]:2121 ssh-rsa AAA...==" > known_hosts
$ ssh-keygen -Hf known_hosts 
known_hosts updated.
Original contents retained as known_hosts.old
WARNING: known_hosts.old contains unhashed entries
Delete this file to ensure privacy of hostnames
$ ssh-keygen -H -F "[hostname]:2121" -f known_hosts
|1|R21497dX9jN052A92GSoVFbuTPM=|lRtIr6O564EaFG0SsIulNAWpcrM= ssh-rsa AAA...==

Pode ser necessário usar o endereço IP em vez do nome do host, mas geralmente deve funcionar.

    
por 05.04.2016 / 17:40