Этот пример Java пытается использовать Jsch для загрузки файла с удаленного сервера в локальную систему.
com.jcraft jsch 0.1.55
package com.mkyong.io.howto; import com.jcraft.jsch.*; public class SFTPFileTransfer { private static final String REMOTE_HOST = "1.1.1.1"; private static final String USERNAME = ""; private static final String PASSWORD = ""; private static final int REMOTE_PORT = 22; public static void main(String[] args) { String localFile = "/home/mkyong/local/Test10.txt"; String remoteFile = "/home/mkyong/remote/Test.txt"; Session jschSession = null; try { JSch jsch = new JSch(); // Why UnknownHostKey? jsch.setKnownHosts("/home/mkyong/.ssh/known_hosts"); jschSession = jsch.getSession(USERNAME, REMOTE_HOST, REMOTE_PORT); jschSession.setPassword(PASSWORD); jschSession.connect(); Channel sftp = jschSession.openChannel("sftp"); sftp.connect(); ChannelSftp channelSftp = (ChannelSftp) sftp; // download file from remote server to local channelSftp.get(remoteFile, localFile); channelSftp.exit(); } catch (JSchException | SftpException e) { e.printStackTrace(); } finally { if (jschSession != null) { jschSession.disconnect(); } } System.out.println("Done"); } }
Запустите вышеуказанную программу, и она выбросит Неизвестный хост-ключ
?
com.jcraft.jsch.JSchException: UnknownHostKey: 1.1.1.1. RSA key fingerprint is :::: at com.jcraft.jsch.Session.checkHost(Session.java:805) at com.jcraft.jsch.Session.connect(Session.java:345) at com.jcraft.jsch.Session.connect(Session.java:183) at com.mkyong.io.howto.SFTPFileTransfer.initJsch(SFTPFileTransfer.java:29) at com.mkyong.io.howto.SFTPFileTransfer.uploadFileUsingJsch(SFTPFileTransfer.java:35) at com.mkyong.io.howto.SFTPFileTransfer.main(SFTPFileTransfer.java:16)
Решение
Чтобы решить эту проблему, мы можем использовать ssh-keyscan
для добавления удаленного IP-адреса или имени хоста в ~/.ssh/known_hosts
ssh-keyscan -t rsa>> ~/.ssh/known_hosts ssh-keyscan -t rsa >> ~/.ssh/known_hosts
Например,
$ ssh-keyscan -t rsa 1.1.1.1 >> ~/.ssh/known_hosts # 1.1.1.1:22 SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u7
Рекомендации
Оригинал: “https://mkyong.com/java/jsch-unknownhostkey-exception/”