没有known_host文件和StrictHostKeyChecking的JSch scp

时间:2015-04-01 13:48:13

标签: java scp jsch public-key

我正在尝试将一些文件从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();

1 个答案:

答案 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客户端都有效。