Resolving Java UnknownHostKey Error in JSch SFTP Library
When working with Java SFTP (using JSch), you may encounter the 'java.net.UnknownHostException: UnknownHostKey' error. This occurs due to host key checking being enabled, which prevents SSH connections to unknown hosts for security reasons.
Solution
To resolve the error, you have two options:
Option 1: Disable Host Key Checking (Not Recommended)
Important Reminder: This is not a secure solution and should only be used for testing purposes.
java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config);
Option 2: Set Up Expected Host Key (Highly Recommended)
This approach ensures security while connecting to SSH servers.
Using ssh-keyscan (Linux/Unix)
ssh-keyscan example.com > known_hosts
Using Windows
Obtain a Windows build of ssh-keyscan from either the Win32-OpenSSH project or Git for Windows, then follow the same steps.
Once you have generated the known_hosts file, reference it in your JSch code:
JSch jsch = new JSch(); jsch.setKnownHosts("/path/to/known_hosts");
Alternatively, You Can:
JSch.getHostKeyRepository().add(...) // Provide the expected host key manually
By utilizing these methods, you can bypass the UnknownHostKey error while maintaining security in your Java SFTP operations. However, it's crucial to remember that disabling host key checking is only advisable for testing purposes and should be avoided in production environments.
The above is the detailed content of How to Resolve the Java `UnknownHostException: UnknownHostKey` Error in JSch SFTP?. For more information, please follow other related articles on the PHP Chinese website!