Heim > Java > javaLernprogramm > Wie behebe ich den „UnknownHostKey'-Fehler bei Verwendung der SFTP-Bibliothek von JSch?

Wie behebe ich den „UnknownHostKey'-Fehler bei Verwendung der SFTP-Bibliothek von JSch?

Susan Sarandon
Freigeben: 2024-12-05 12:37:14
Original
330 Leute haben es durchsucht

How to Resolve the

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);
Nach dem Login kopieren

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
    Nach dem Login kopieren
  • Platzieren Sie die generierte Datei „known_hosts“ an einem Ort, auf den zugegriffen werden kann JSch.
  • Verwenden Sie „JSch.setKnownHosts(path)“, um auf die Datei zu verweisen:

    JSch.setKnownHosts("path/to/known_hosts");
    Nach dem Login kopieren

Hostschlüssel manuell hinzufügen:

  • Rufen Sie den Hostschlüssel mit SSH-Tools vom Server ab (z. B. „ssh-keyscan“).
  • Erstellen Sie eine JSch „HostKey“-Instanz mit dem abgerufenen Schlüssel.
  • Fügen Sie den HostKey zum Host-Schlüssel-Repository hinzu:

    JSch jsch = new JSch();
    HostKey hostKey = jsch.getHostKeyRepository().add(hostname, publicKey, algName);
    Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage