我正在尝试将一些文件从Windows机器复制到Linux机器,到目前为止,这对JSch工作正常。我可以使用StrictHostKeyChecking no
复制文件,或者我需要从我复制的Linux机器上获取known_host
文件。我正在使用Java项目的代码,该项目应该能够自动将文件发送到(未知的)Linux机器。我得到了机器的用户名,密码,IP和公钥。有没有known_host
文件和publickey进行身份验证的方法?由于安全问题,我不想将StrictHostKeyChecking
切换到no
,但后来我得到“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();
答案 0 :(得分:0)
这没有意义。要么您知道主机公钥,您可以使用known_host
文件或以编程方式验证它:
public void KnownHosts.add(HostKey hostkey, UserInfo userinfo)
(您可以使用KnownHosts
)
Session.getHostKeyRepository()
的实例
有关详细信息,请参阅How to resolve Java UnknownHostKey, while using JSch SFTP library?
或者您不知道主机公钥,然后您无法创建安全连接(StrictHostKeyChecking=no
是您唯一的选择。)
请参阅我有关verifying the host key的文章,了解其内容及其重要性。本文是关于WinSCP客户端的,但它对任何SSH客户端都有效。