Может ли сервер SSH(SFTP) иметь несколько отпечатков пальцев?

Может ли сервер SSH(SFTP) иметь несколько отпечатков пальцев?

Я создаю автоматизированный SFTP-клиент с помощью Java и мне, конечно, нужно сохранить отпечаток SSH сервера для каждого сервера, но возможно ли, что сервер имеет два или более уникальных отпечатка?

Возможно ли, что есть SFTP-сервис с балансировкой нагрузки, который имеет несколько SSH-серверов за балансировщиком нагрузки, и у каждого из них есть уникальный отпечаток? Или это как-то принудительно, что они все используют один и тот же отпечаток?

решение1

Да и нет.

Один сервер может иметь несколько ключей хоста для альтернативных алгоритмов (фактическибольшинствосерверы поддерживают, например, RSA + EdDSA), но для каждого соединения выбирается только один ключ хоста, и для клиентов должно быть достаточно запомнить только один.

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


Более детально:

  • Прежде всего, дажеодинокийсервер всегда может иметь несколько ключей хоста с разными алгоритмами, например: один ключ ssh-rsa, один ключ ssh-ed25519 и один ключ ecdsa-nistp256.

    Рукопожатие требует от клиента выбрать один ключ, и обычно запоминается только отпечаток этого одного ключа. Однако некоторые клиенты, например PuTTY, позволяют повторно задавать ключи соединения со всеми доступными ключами хоста для поддержки миграции алгоритма.

    Например, вы подключаетесь, используя ключ ssh-rsa сервера, но дополнительно запоминаете его отпечаток ssh-ed25519. Позже, если сервер отключит поддержку ssh-rsa, вы теперь сможете использовать ssh-ed25519 без повторного запроса пользователя.

  • При подключении к службам с балансировкой нагрузки некоторые клиенты разрешают использовать несколько известных ключей хоста.даже одного и того же типадля утверждения вручную.

    Например, если одно и то же имя хоста используется несколькими узлами, клиент OpenSSH позволяет вручную добавить все их открытые ключи в ~/.ssh/known_hosts и примет любую совпадающую запись.

    Однако OpenSSH этого не сделает.автоматически– как только он узнает первый ключ, он будет считать любое изменение фатальной ошибкой. Поэтому на практике я бы предположил, что системные администраторы на самом деле пытаются избежать плохого пользовательского опыта и просто клонируют один и тот же ключ хоста на все узлы с балансировкой нагрузки.

Резюме существующих клиентов:

  • PuTTY может отслеживать несколько ключей на сервере, но только один для каждого алгоритма. Другими словами, он требует, чтобы комбинация [имя хоста, порт, алгоритм] была уникальной.
  • OpenSSH может отслеживать несколько ключей на одном сервере без каких-либо требований к уникальности.
  • <Другие клиенты?>

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