Maison > Java > javaDidacticiel > Comment résoudre l'erreur « UnknownHostKey » lors de l'utilisation de la bibliothèque SFTP de JSch ?

Comment résoudre l'erreur « UnknownHostKey » lors de l'utilisation de la bibliothèque SFTP de JSch ?

Susan Sarandon
Libérer: 2024-12-05 12:37:14
original
327 Les gens l'ont consulté

How to Resolve the

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);
Copier après la connexion

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
    Copier après la connexion
  • Placez le fichier "known_hosts" généré dans un emplacement accessible à JSch.
  • Utilisez "JSch.setKnownHosts(path)" pour pointer vers le fichier :

    JSch.setKnownHosts("path/to/known_hosts");
    Copier après la connexion

Ajouter manuellement une clé d'hôte :

  • Récupérer la clé d'hôte du serveur à l'aide des outils SSH (par exemple, "ssh-keyscan").
  • Créez une instance JSch "HostKey" à l'aide de la clé récupérée.
  • Ajoutez la HostKey au référentiel de clé hôte :

    JSch jsch = new JSch();
    HostKey hostKey = jsch.getHostKeyRepository().add(hostname, publicKey, algName);
    Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal