0
好吧,我得到UnknownHostKey異常。我不想像這篇文章com.jcraft.jsch.JSchException: UnknownHostKey那樣用StrictHostKeyChecking = no做一個解決方法。我希望JSCH使用系統的ssh使用的已知主機文件。可能嗎?Jsch已知主機不工作
好吧,我得到UnknownHostKey異常。我不想像這篇文章com.jcraft.jsch.JSchException: UnknownHostKey那樣用StrictHostKeyChecking = no做一個解決方法。我希望JSCH使用系統的ssh使用的已知主機文件。可能嗎?Jsch已知主機不工作
是的,這是可能的,同時使JSCH連接你需要設置knownHosts文件位置:
例如JSCH連接代碼:
JSch jsch = new JSch();
jsch.setKnownHosts(propertyReader.getKnownHosts());
session = jsch.getSession(propertyReader.getUsername(),
propertyReader.getSftpLocation(), 22);
session.setPassword(propertyReader.getPassword());
session.connect();
channel = session.openChannel("sftp");
channel.connect();
ChannelSftp sftp = (ChannelSftp) channel;
if (!StringUtils.isBlank(fileToPut)) {
sftp.put(fileToPut, propertyReader.getSftpDirectory() + "/"
+ newFileName);
} else {
sftp.put(propertyReader.getSftpDirectory() + "/" + newFileName,
ChannelSftp.OVERWRITE);
}
這裏propertyReader是類設置所有的位置sftp logistics 已知hosts文件將位於運行java程序的用戶的〜/ .ssh目錄中:
/home/<username>/.ssh/known_hosts
要遠程SFTP服務器添加到已知主機文件,可以使用從服務器上,你需要使用相同的用戶運行Java程序的常規SFTP命令首先做一個手動SFTP:
sftp [email protected]
然後提供密碼。或者如果使用密鑰:
sftp -i KEYFILE.pem [email protected]
如果連接已建立,它會提示您將主機添加到已知主機,並回答yes。
將主機註冊到已知主機文件後,使用java程序進行連接。
請顯示代碼 – Palcente