Können SSH(SFTP)-Server mehrere Fingerabdrücke haben?

Können SSH(SFTP)-Server mehrere Fingerabdrücke haben?

Ich erstelle einen automatisierten SFTP-Client mit Java und muss natürlich den SSH-Fingerabdruck des Servers für jeden Server speichern, aber ist es möglich, dass der Server zwei oder mehr eindeutige Fingerabdrücke hat?

Ist es möglich, dass es einen lastausgeglichenen SFTP-Dienst gibt, der mehrere SSH-Server hinter dem Loadbalancer hat und jeder davon einen eindeutigen Fingerabdruck hat? Oder wird irgendwie erzwungen, dass sie alle denselben Fingerabdruck verwenden?

Antwort1

Ja und nein.

Es ist möglich, dass ein einzelner Server mehrere Hostschlüssel für alternative Algorithmen hat (tatsächlicham meistenServer unterstützen z. B. RSA + EdDSA), aber für jede Verbindung wird nur ein einziger Hostschlüssel gewählt, und für Clients sollte es ausreichen, sich nur einen zu merken.

Bei lastausgeglichenen Diensten gibt es keinen magischen Mechanismus, derGewaltalle Knoten denselben Schlüssel verwenden. In der Praxis ist es jedoch sehr wahrscheinlich, dass der Systemadministrator einfach dasselbe Schlüsselpaar auf alle Knoten kopiert, um den Benutzern die Verbindung zu erleichtern.


Ausführlicher:

  • Zunächst einmal, sogar eineinzelEin Server kann immer mehrere Hostschlüssel mit unterschiedlichen Algorithmen haben – zum Beispiel: einen SSH-RSA-Schlüssel, einen SSH-ED25519-Schlüssel und einen ECDSA-NISTP256-Schlüssel.

    Beim Handshake muss der Client einen Schlüssel auswählen, und normalerweise wird nur der Fingerabdruck dieses Schlüssels gespeichert. Einige Clients – z. B. PuTTY – ermöglichen jedoch die Neuverschlüsselung der Verbindung mit allen verfügbaren Hostschlüsseln, um die Algorithmusmigration zu unterstützen.

    Sie stellen beispielsweise eine Verbindung mit dem SSH-RSA-Schlüssel des Servers her, merken sich aber zusätzlich dessen SSH-ED25519-Fingerabdruck. Wenn der Server später die SSH-RSA-Unterstützung deaktiviert, können Sie jetzt SSH-ED25519 verwenden, ohne den Benutzer erneut dazu aufzufordern.

  • Bei der Verbindung mit Lastenausgleichsdiensten erlauben einige Clients mehrere bekannte Hostschlüsselsogar vom gleichen Typmuss manuell genehmigt werden.

    Wenn beispielsweise derselbe Hostname von mehreren Knoten gemeinsam genutzt wird, können Sie mit dem OpenSSH-Client alle ihre öffentlichen Schlüssel manuell zu ~/.ssh/known_hosts hinzufügen und alle übereinstimmenden Einträge akzeptieren.

    OpenSSH wird dies jedoch nicht tunautomatisch– sobald der erste Schlüssel bekannt ist, wird jede Änderung als schwerwiegender Fehler behandelt. In der Praxis würde ich also davon ausgehen, dass Systemadministratoren tatsächlich versuchen, eine schlechte Benutzererfahrung zu vermeiden und einfach denselben Hostschlüssel auf alle Knoten mit Lastenausgleich klonen.

Zusammenfassung der Bestandskunden:

  • PuTTY kann mehrere Schlüssel pro Server verfolgen, aber nur einen für jeden Algorithmus. Mit anderen Worten: Die Kombination [Hostname, Port, Algorithmus] muss eindeutig sein.
  • OpenSSH kann mehrere Schlüssel pro Server verfolgen, ohne dass eine Eindeutigkeit erforderlich ist.
  • <Andere Kunden?>

verwandte Informationen