Python Paramiko: проверка отпечатков ключей хоста SSH вручную

Я использую python Paramiko для подключения с помощью ssh к удаленному ящику ubuntu, размещенному на провайдере vps. Используя клиентскую машину на базе Windows 7, я могу подключиться следующим образом:

import paramiko
import binascii
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='HOSTNAME', username='USERNAME', password='PASSWORD')

Это все хорошо, но теперь я хочу проверить идентичность хост-сервера, и, поскольку я работаю в Windows, Paramiko не сможет получить файл known_hosts или что-то в этом роде. Я пробовал следующий код:

#... after connection is successful
keys = ssh.get_host_keys()
key = keys['HOSTNAME']['ssh-rsa']
print binascii.hexlify(key.get_fingerprint())
# key.get_fingerprint() returns the md5 hash of 
# the public part of the key (whatever that means)

который дает результат, аналогичный следующему:

a42273f83e62d65cc87231a2ba33eff3

Дело в том, что на панели управления моего VPS-провайдера отпечатки ключей хоста RSA и DSA перечислены примерно так:

RSA 1b:c2:f4:8f:f2:86:fc:f2:96:ba:cc:24:41:e9:d7:86
DSA 36:b9:1f:ad:53:b5:c4:38:78:bf:cb:9d:38:fa:44:ce

и, как можно видеть, ни один из отпечатков пальцев не соответствует сгенерированному. Как я могу сравнить свой отпечаток, созданный вручную, со значениями отпечатка на панели управления удаленного хоста? Я правильно делаю?


person Rabih Kodeih    schedule 30.08.2012    source источник


Ответы (1)


Решено: оказалось, что отпечаток ключа RSA, отображаемый на панели управления, не для хоста VPS, а для внешней специальной консоли. Фактический ключ (хоста VPS) находится в: /etc/ssh/ssh_host_rsa_key.pub, а значение отпечатка пальца (его хеш MD5) - это именно то, что я получил из кода проверки на стороне клиента. Так что проблем с самого начала не было.

person Rabih Kodeih    schedule 30.08.2012