Beheben des Java UnknownHostKey-Problems mit der JSch SFTP-Bibliothek
Bei Verwendung der Java SFTP-Bibliothek (JSch) kann der Fehler „UnknownHostKey“ auftreten aufgrund der strengen Überprüfung des Hostschlüssels. Dieser Fehler wird ausgelöst, weil JSch die Authentizität des vom Remote-Server präsentierten Hostschlüssels nicht überprüfen kann.
Ursache:
Der Fehler tritt auf, wenn Sie versuchen, eine Verbindung zu einem Remote-SFTP herzustellen Server zum ersten Mal. JSch führt eine Überprüfung des Hostschlüssels durch, um sicherzustellen, dass Sie eine Verbindung zum richtigen Server und nicht zu einem böswilligen Betrüger herstellen.
Lösung:
Es gibt zwei gängige Ansätze zur Lösung dieses Problems:
1. Überspringen der Überprüfung des Hostschlüssels:
Diese Methode wird nicht empfohlen, da sie die Sicherheit Ihrer Verbindung gefährdet. Wenn Sie jedoch sicher sind, dass der Hostschlüssel vertrauenswürdig ist, können Sie die Überprüfung des Hostschlüssels deaktivieren, indem Sie die Eigenschaft „StrictHostKeyChecking“ auf „Nein“ setzen, bevor Sie eine Verbindung zum Server herstellen:
java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config);
2. Hinzufügen des erwarteten Hostschlüssels:
Für erhöhte Sicherheit ist es ratsam, den erwarteten Hostschlüssel zum Hostschlüssel-Repository von JSch hinzuzufügen. Dies kann mit einer der folgenden Methoden erreicht werden:
Bekannte Hosts-Datei generieren:
Führen Sie den folgenden Befehl von einem *nix-Server aus aus:
ssh-keyscan example.com > known_hosts
Verwenden Sie „JSch.setKnownHosts(path)“, um auf die Datei zu verweisen:
JSch.setKnownHosts("path/to/known_hosts");
Hostschlüssel manuell hinzufügen:
Fügen Sie den HostKey zum Host-Schlüssel-Repository hinzu:
JSch jsch = new JSch(); HostKey hostKey = jsch.getHostKeyRepository().add(hostname, publicKey, algName);
Zusätzlich Hinweis:
Stellen Sie sicher, dass der von Ihnen bereitgestellte Hostschlüssel mit dem tatsächlichen Schlüssel übereinstimmt, der vom Remote-Server bereitgestellt wird. Wenn die Schlüssel nicht übereinstimmen, schlägt die Verbindung aufgrund einer Sicherheitsausnahme dennoch fehl.
Das obige ist der detaillierte Inhalt vonWie behebe ich den „UnknownHostKey'-Fehler bei Verwendung der SFTP-Bibliothek von JSch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!