Отпечаток пальца сервера 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.