У меня проблема. Мне нужен скрипт bash, который соответствует отпечаткам ssh в known_hosts и на удаленном сервере. Вот что у меня есть:

keyFile=$(mktemp)
ssh-keyscan -H $ip > $keyFile 2> /dev/null
hashRemote=$(ssh-keygen -f $keyFile -H -F $ip | sed -n -r -e 's/^[^#][^ ]+ [^ ]+ ([^ ]+)$/\1/p')
hashLocal=$(ssh-keygen -f ~/.ssh/known_hosts -H -F $ip | sed -n -r -e 's/^[^#][^ ]+ [^ ]+ ([^ ]+)$/\1/p')
rm $keyFile

echo $hashRemote
echo $hashLocal

Проблема в том, что вывод не соответствует. Содержимое od known_hosts зависит от поддерживаемых типов ключей. Итак, вывод ssh-keygen выглядит так:

# Host 10.0.0.35 found: line 1 type RSA                                                          
|1|H24d9m0xG5zrw6QBkigVjarwTFw=|xpisuvwhtqsNkH0CJ6pYoB/y1G8= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAB
AQC1Ge/M8bA7nQsbMPy8JmFo6T3Ls2FXR01HyHoW5uwTeW3EoaD39IemRYmkDHLZwlQiLSSrw/kgkHATtQ4pqyg0o5mJoajmw
czUQ78Poavea60OYXJWLh12uZlRjyiu/tQXdHaBI3YwCNnP827t4guvJjpdOAsFgZqfuX9qERGPJMHj0YqRelanB9Za3Fueb9
QsT8wOe/wPCw2YwGapUndcUMoChmN2YRMjRk1JU4DPXiQ56+A2S9V4iP+drZfoK3c3tCdUOVUxCPEwqCraav+viSNq2odVL9F
79jIGxP43TqUcCyMcFU7vGEVshVu7gvUl7KKCMa0wu5pr+Z1X3zUn                                            
# Host 10.0.0.35 found: line 3 type ECDSA                                                        
|1|XdzrIRaJLfushc3efDRkNAJwqcQ=|UUyGx6z6I61mqMVRh/j/5+zs6eA= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNo
YTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLvteJqElWirJtA75IuDtvwKIbGfbvdCE+O/6bkFhj6oFlSVZqqecmm+MzRca
aLg30hLxLpO8bxwVxeVY62sDg8=

Один тип - это RSA, а другой - ECDSA. Мой вопрос, могу ли я как-то сопоставить known_hosts и удаленный отпечаток пальца? Заранее спасибо...

0