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