Отпечаток пальца сервера SSH PHPStorm не совпадает

Я использую Subversion из PHPStorm, и я получаю следующую ошибку при попытке подключиться к серверу SVN...

Подлинность хоста svn+ssh://svn.example.com:22 не может быть установлена. Отпечаток ключа SSH-RSA

хх: хх: хх: хх: хх: хх: хх: хх: хх: хх: хх: хх: хх: хх: хх: хх: хх: хх: хх: хх

Вы уверены, что хотите продолжить подключение?

Проблема в том, что отпечаток не совпадает с отпечатком на сервере. Если я удаляю сервер из моего файла ~/.ssh/known_hosts, а затем ssh, то на нем отображаются совершенно другие отпечатки пальцев - что является правильным для этого сервера.

Я только что переместил SVN-репозиторий на новый сервер и изменил DNS, чтобы он указывал на новый сервер, поэтому я ожидал, что PHPStorm будет жаловаться на несовпадающий отпечаток, но я удивлен, что на новом сервере не отображается правильный отпечаток, Отпечаток пальца также не соответствует старому серверу или любому другому серверу, к которому PHPStorm когда-либо подключался. Я опасаюсь позволить этому соединиться, пока я не пойму, что происходит.

PHPStorm правильно подключается к новому серверу, поэтому я не вижу, как он может получить неправильный отпечаток пальца, и кажется маловероятным, что я вижу настоящего человека в средней атаке, поскольку всякий раз, когда я вижу ssh из командной строки, он видит правильный отпечаток пальца.

Я не уверен, где PHPStorm кеширует отпечатки серверов. Я попытался сделать недействительными кэши, чтобы выяснить, не приведет ли это к тому, что они забудут устаревшие данные отпечатков пальцев, но это маловероятно, учитывая, что сообщаемый отпечаток не соответствует старым или новым серверам.

Я прихожу к выводу, что это ошибка в PHPStorm, но любые другие мысли будут приветствоваться.

РЕДАКТИРОВАТЬ:

PHPStorm показывает 20-байтовый отпечаток. Запуск этого на сервере (Debian)

ssh-keygen -l -f / etc / ssh / ssh_host_rsa_key

отображает 16-байтовый отпечаток, поэтому они не могут совпадать. Есть ли способ получить 20-байтовый отпечаток из открытого ключа сервера?

1 ответ

Решение

Таким образом, получается, что 160-битный (20-байтовый) хэш-код PHPStorm является хешем SHA1, тогда как ssh-keygen показывает 128-битный (16-байтовый) хеш-код MD5.

Ни один из них не очень ясно говорит об этом, поэтому я просто собрал быстрый скрипт, чтобы показать различные хеши открытого ключа (при условии, что ваш открытый ключ находится в /etc/ssh/ssh_host_rsa_key.pub

#!/usr/bin/python

import binascii
import hashlib

keyfile = "/etc/ssh/ssh_host_rsa_key.pub"

def showHash(type, hash, data):
    hash.update(data)
    hex=hash.hexdigest()
    hexbytes=[hex[i:i+2] for i in range(0, len(hex), 2)]
    hexstring=":".join(hexbytes)
    print type+" "+hexstring

f = open(keyfile)
words = f.readline().split()
data=words[1]
bindata=binascii.a2b_base64(data)

showHash("md5", hashlib.md5(), bindata)
showHash("sha1", hashlib.sha1(), bindata)
showHash("sha256", hashlib.sha256(), bindata)

Оказывается, что PHPStorm использует хеш SHA1, и это совершенно правильно. Но было бы полезно, если бы вы могли выбрать, какую хеш-функцию использовать в ssh-keygen (что, я думаю, вы можете в sh-keygen-g3) или в PHPStorm.

Другие вопросы по тегам