Résolution du problème Java UnknownHostKey avec la bibliothèque JSch SFTP
Lors de l'utilisation de la bibliothèque Java SFTP (JSch), vous pouvez rencontrer l'erreur "UnknownHostKey" en raison d'une vérification stricte de la clé de l'hôte. Cette erreur est générée car JSch ne peut pas vérifier l'authenticité de la clé hôte présentée par le serveur distant.
Cause première :
L'erreur se produit lorsque vous tentez de vous connecter à un SFTP distant. serveur pour la première fois. JSch effectue une vérification de la clé d'hôte pour garantir que vous vous connectez au bon serveur et non à un imposteur malveillant.
Solution :
Il existe deux approches courantes pour résoudre ce problème :
1. Ignorer la vérification de la clé de l'hôte :
Cette méthode n'est pas recommandée, car elle compromet la sécurité de votre connexion. Cependant, si vous êtes certain que la clé d'hôte est fiable, vous pouvez désactiver la vérification de la clé d'hôte en définissant la propriété « StrictHostKeyChecking » sur « no » avant de vous connecter au serveur :
java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config);
2. Ajout de la clé d'hôte attendue :
Pour une sécurité renforcée, il est conseillé d'ajouter la clé d'hôte attendue au référentiel de clés d'hôte de JSch. Ceci peut être réalisé en utilisant l'une des méthodes suivantes :
Générer un fichier d'hôtes connus :
Exécutez la commande suivante à partir d'un serveur *nix :
ssh-keyscan example.com > known_hosts
Utilisez "JSch.setKnownHosts(path)" pour pointer vers le fichier :
JSch.setKnownHosts("path/to/known_hosts");
Ajouter manuellement une clé d'hôte :
Ajoutez la HostKey au référentiel de clé hôte :
JSch jsch = new JSch(); HostKey hostKey = jsch.getHostKeyRepository().add(hostname, publicKey, algName);
Supplémentaire Remarque :
Assurez-vous que la clé d'hôte que vous fournissez correspond à la clé réelle présentée par le serveur distant. Si les clés ne correspondent pas, la connexion échouera toujours en raison d'une exception de sécurité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!