Heim >Java >javaLernprogramm >Wie behebt man den „UnknownHostKey'-Fehler in Java SFTP (JSch)?

Wie behebt man den „UnknownHostKey'-Fehler in Java SFTP (JSch)?

Barbara Streisand
Barbara StreisandOriginal
2024-12-02 00:18:10888Durchsuche

How to Solve the

Den UnknownHostKey-Fehler in Java SFTP (JSch) verstehen

Bei der Verwendung der Java SFTP-Bibliothek JSch ist ein „UnknownHostKey“-Fehler aufgetreten. Dieser Fehler weist darauf hin, dass JSch die Authentizität des öffentlichen Schlüssels des Remote-Hosts nicht überprüfen kann. Um dieses Problem zu lösen, ist es wichtig, die zugrunde liegende Ursache zu verstehen.

Ursache:

Wenn JSch eine Verbindung zu einem Remote-Host herstellt, vergleicht es den öffentlichen Schlüssel des Hosts mit einer Liste bekannter Hostschlüssel. Wenn der Schlüssel des Remote-Hosts nicht in der Liste bekannter Hosts gefunden wird, fordert es den Benutzer zur Bestätigung auf und fragt, ob der Schlüssel zur Liste hinzugefügt werden soll. Standardmäßig ist „StrictHostKeyChecking“ von JSch aktiviert, was verhindert, dass automatisch eine Verbindung zu Hosts mit unbekannten oder nicht überprüften Schlüsseln hergestellt wird.

Lösung:

1. Überprüfung des Host-Schlüssels ignorieren (nicht empfohlen):

Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);

Dieser Ansatz ermöglicht es JSch, eine Verbindung zum Remote-Host herzustellen, ohne den Host-Schlüssel zu überprüfen. Dies ist keine sichere Vorgehensweise und sollte nur in vertrauenswürdigen Umgebungen verwendet werden Umgebungen. Die Grundursache des Problems wird dadurch nicht behoben.

2. Konfigurieren Sie die Überprüfung des Host-Schlüssels:

Option 1: Verwenden Sie eine Datei bekannter Hosts

JSch.setKnownHosts("/path/to/known_hosts");

Diese Datei enthält eine Liste bekannter Host-Schlüssel und deren entsprechende Fingerabdrücke . Beim Herstellen einer Verbindung zu einem Remote-Host vergleicht JSch den öffentlichen Schlüssel des Hosts mit den Schlüsseln in der bekannten Hosts-Datei. Wenn eine Übereinstimmung gefunden wird, wird die Verbindung ohne Benutzerbestätigung fortgesetzt.

Option 2: Hostschlüssel manuell hinzufügen

HostKey knownHostKey = new HostKey("127.0.0.1", 22, "rsa", "A2:39:3F:44:88:E9:1F:D7:D1:71:F4:85:98:FB:90:DC");
session.getHostKeyRepository().add(knownHostKey, session);

Mit dieser Methode können Sie den erwarteten Wert manuell bereitstellen Host-Schlüssel für den Remote-Host, sodass JSch die Verbindung ohne Benutzeraufforderungen überprüfen kann.

Durch die Implementierung einer dieser Methoden können Sie den „UnknownHostKey“ auflösen. Fehler beheben und eine sichere SFTP-Verbindung zum Remote-Host herstellen.

Das obige ist der detaillierte Inhalt vonWie behebt man den „UnknownHostKey'-Fehler in Java SFTP (JSch)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn