Что может вызвать несоответствие отпечатка пальца ключа хоста SFTP?

Удаленный пользователь впервые попытался подключиться к моему SFTP/SSH-серверу, используя клиент "Передача" в 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.

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

2 ответа

Решение

Оказывается, что используемая программа FTP не была Transmit, а была Cyberduck 4.5.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
Другие вопросы по тегам