Что может стать причиной несовпадения отпечатка ключа хоста SFTP?

Что может стать причиной несовпадения отпечатка ключа хоста SFTP?

Удаленный пользователь попытался впервые подключиться к моему серверу SFTP/SSH, используя клиент «Transmit» в Mac OS X, и обнаружил, что отпечаток ключа хоста не соответствует ожидаемому значению.

У меня есть скриншот отображаемого отпечатка пальца, и я сравнил его с выводом ssh-keygen -lf /etc/ssh/ssh_host_dsa_keyи ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub, и он не соответствует ни одному из них.

Я также безуспешно сравнил отпечаток пальца с выводом cut -d ' ' -f 2 < /etc/ssh/ssh_host_dsa_key.pub | base64 -d | sha1sumи cut -d ' ' -f 2 < /etc/ssh/ssh_host_rsa_key.pub | base64 -d | sha1sum(потому что, похоже, используются разные алгоритмы снятия отпечатков пальцев?).

Окно сообщения на стороне клиента имеет заголовок (переведено на английский язык)

Неизвестный ключ хоста для< имя хоста >

и состояния

Сервер неизвестен. Отпечаток ключа хоста< 16 октетов >. ( Разрешить ) ( Запретить ) [ ] Всегда

Таким образом, нет никаких указаний на то, используется ли ключ RSA или DSA, а также используется ли для создания отпечатка пальца алгоритм MD5 или какой-либо другой SHA.

Отпечаток пальца, отображаемый удаленному пользователю, состоит из 16 октетов, разделенных двоеточием, поэтому, по всей видимости, он не использует SHA-224 или что-то более высокое.Обновлять: Я только что заметил, что даже хэш SHA-1 будет иметь 20 октетов, так что отображаемый отпечаток, по-видимому, не имеет формата SHA.

В конечном итоге соединение переходит на правильный сервер, поскольку я вижу попытку входа в журналы сервера, если пользователь разрешает соединение. Так что, похоже, имя хоста/IP введены правильно на стороне клиента.

Подключение к другому (совершенно не связанному) SFTP-серверу также показывает неверный отпечаток (но другой, чем для первого сервера).

Если я попытаюсь подключиться к серверу самостоятельно, используя OpenSSH с другого хоста (или локально с самого сервера), мне будет показан правильный отпечаток (отпечаток MD5 для ключа хоста RSA).

Сервер работает под управлением Debian 6 LTS со стандартным сервером OpenSSH.

Что может быть причиной этого несовпадения отпечатков пальцев? Как мне устранить эту проблему?

решение1

Если это первый раз, когда они подключаются, неважно, есть ли несоответствие... у клиента просто была какая-то не связанная старая запись, которая случайно имела то же имя хоста или IP-адрес, связанный с ней. Просто очистите ее с помощью:

ssh-keygen -R $name_or_ip

После этого он должен обязательно сказать, RSA, ECDSA и т. д. это при следующем подключении. Если нет, попробуйте использовать подходящий клиент, например, клиент OpenBSD OpenSSH, который является стандартным для Linux, или попробуйте -v (или -vvvv и т. д. подробные параметры). А затем проверьте и примите новый ключ. Формат отпечатка ключа в старых клиентах - md5 (а в новых - sha256, в каком-то странном формате base64 вместо ascii-hex), и правильный способ получить отпечаток на стороне сервера:

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

решение2

Оказалось, что FTP-программа не была Transmit, а была Cyberduck 4.5.1. Проблема с неправильным отпечатком уже была известна какНеправильный отпечаток ключа хоста. Обновление до последней версии устранило эту проблему, и теперь отображаемый отпечаток пальца правильный.

Связанный контент