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