JSch scp without known_host file and with StrictHostKeyChecking

家住魔仙堡 提交于 2019-12-08 12:37:01

问题


I am trying to copy some files from a Windows machine to a Linux machine, which is working fine with JSch so far. I can copy files using StrictHostKeyChecking no or I need to have the known_host file from the Linux machine I copy to. I am using the code for a Java project which should be able to send files automatically to (unknown) Linux machines. I got the username, password, IP and the publickey for the machine. Is there any way to authenticate without the known_host file and via the publickey? Because of security issues I do not want to switch StrictHostKeyChecking to no but then I get "com.jcraft.jsch.JSchException: UnknownHostKey"

FileInputStream fis = null;
JSch jsch = new JSch();

//jsch.setKnownHosts("");
jsch.addIdentity("D:\\Uni\\Arbeit\\remote_id_rsa");
Session session=jsch.getSession(user, host, 22);
session.setPassword(password);
//session.setConfig("StrictHostKeyChecking", "no");
session.connect();

回答1:


That does not make sense. Either you know the host public key and you can verify it either using the known_host file or programmatically using:

public void KnownHosts.add(HostKey hostkey, UserInfo userinfo)

(You can access the instance of KnownHosts using Session.getHostKeyRepository())

For more details, see How to resolve Java UnknownHostKey, while using JSch SFTP library?


Or you do not know the host public key, and then you cannot create a secure connection (and the StrictHostKeyChecking=no is your only option).


See my article about verifying the host key to understand, what is it about, and its importance. The article is about WinSCP client, but it's valid in general for any SSH client.



来源:https://stackoverflow.com/questions/29392536/jsch-scp-without-known-host-file-and-with-stricthostkeychecking

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!