我试图从Windows机器上复制一些文件到一台Linux机器上,该机器到目前为止工作正常。我可以使用StrictHostKeyChecking no
复制文件,或者我需要从我复制到的Linux机器上获得known_host
文件。我正在使用Java项目的代码,该项目应该能够将文件自动发送到(未知)Linux机器。我得到了机器的用户名,密码,IP和公钥。如果没有known_host
文件和公钥,有没有办法进行身份验证?因为安全问题,我不想切换到StrictHostKeyChecking
但no
然后我得到“com.jcraft.jsch.JSchException:UnknownHostKey”JSch scp without known_host文件和StrictHostKeyChecking
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();
您不想禁用主机密钥检查,但要连接到没有主机密钥的主机。主机密钥检查在这里担任什么角色?由于主机密钥检查,jsch应该在这里做什么? – Kenster 2015-04-01 15:13:19
问题是如果有可能通过不使用jsch.setKnownHosts(“”)连接到机器;而不是将StrictHostKeyChecking设置为no。因为我认为在java程序中比在KnownHostFile中需要公钥/私钥更好。我对JSch和关键认证非常陌生,也许很难得到我真正想做的事情。因此,我再次获得用户名,密码和私钥/公钥对,是否可以使用这些凭证进行身份验证,以便我不需要复制KnownHost文件? – Brave 2015-04-05 12:10:58