当前位置: 首页 > 知识库问答 >
问题:

如何在窗口机器中生成known_host文件 [复制]

公孙宇
2023-03-14

我正在使用Jsch(JCraft)库与SSH服务器建立SSH连接,如下所示:

        JSch jsch = new JSch();
        String user = "****";
        String host = "****";
        int port = 22;
        String privateKey = "***.ppk";//Path to private key(The file is in .ppk format)
        try 
        {
            jsch.addIdentity(privateKey);
            Session session = jsch.getSession(user, host, port);
            java.util.Properties config = new java.util.Properties(); 
            config.put("StrictHostKeyChecking", "no");
            session.setConfig(config);
            session.connect();
            ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
            sftpChannel.connect();
            /*file transfer code*/
            sftpChannel.disconnect();
            session.disconnect();
        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }

SSH连接已成功建立,因为“严格主机密钥检查”已禁用。如果启用,我会收到以下错误:

com.jcraft.jsch.JSchException: UnknownHostKey: ******. RSA key f
 is *************
        at com.jcraft.jsch.Session.checkHost(Session.java:805)
        at com.jcraft.jsch.Session.connect(Session.java:345)
        at com.jcraft.jsch.Session.connect(Session.java:183)

我知道我们需要在代码中设置已知主机文件,如下所示:

jsch.setKnownHosts(knownHostsFileName); 

我无法通过以下命令生成known_hosts文件:

ssh-keyscan <HOST> > known_hosts 

它抛出以下错误:

'ssh-keyscan' is not recognized as an internal or external command,
operable program or batch file.

我只有.ppk格式的公钥和私钥。我没有known_host文件
如何创建known_host文件
为什么ssh keyscan命令抛出错误-无法识别为内部/外部命令?

共有2个答案

李跃
2023-03-14

该文件通常由< code>ssh-keyscan创建,或者由用户连接到ssh主机创建。

您可以通过命令简单地创建它

ssh-keyscan [host]

并保存输出。-H 选项启用散列输出,但我不知道有问题的库是否可以使用它。

请注意,如果没有首先验证主机指纹,known_hosts文件本身就不太有用。以下警告直接来自ssh keyscan手册页:

SECURITY
     If an ssh_known_hosts file is constructed using ssh-keyscan without veri-
     fying the keys, users will be vulnerable to man in the middle attacks.
     On the other hand, if the security model allows such a risk, ssh-keyscan
     can help in the detection of tampered keyfiles or man in the middle
     attacks which have begun after the ssh_known_hosts file was created
殷宾白
2023-03-14

ssh-keyscan是来自Linux的命令 /Unix.为了在Windows上执行它,您需要一个已修改为在Windows上运行的版本。最简单的是安装git-for-windows(下载)并打开Git Bash。在此控制台中,您可以使用ssh-keyscan命令。

 类似资料:
  • 我搜索了很多,但找不到解决方案。我需要使用java程序将文件从本地windows计算机复制到远程windows计算机。我试过用JSch, 在执行上述代码时,我面临以下错误, 我在远程windows计算机上安装了cygwin。Jsch似乎无法找到windows路径。将文件从windows计算机复制到linux计算机时,相同的代码可以正常工作。 请告诉我上述问题的解决方案,或者是否有其他方法可以在ja

  • 接口生成器文件中未知的窗口类(null),改为创建泛型窗口 我是在升级到Xcode 9.1后才注意到这一点的,但我不确定以前是否有。 这里有一个类似的问题:Xcode6奇怪的bug:接口构建器文件中的未知类 在这两个项目中,窗口都由自定义窗口控制器拥有。我检查了故事板xml,但没有发现任何奇怪的地方。

  • 如何在命令期间将文件从docker容器复制到主机? 作为为我的应用程序构建docker映像的一部分,我正在它内部运行一些测试,并且我希望将测试运行的输出复制到主机(它是一个持续集成服务器)中以进行一些报告。

  • 问题内容: 我尝试构建jar,然后将其复制到另一个文件夹。 但是我找不到一个问题。copyJarToBin任务尝试复制旧的jar。如果我删除项目中的/ build文件夹并运行buildApp()任务,则任务createJar()将生成.jar文件,但copyJarToBin()找不到该.jar文件。 你可以帮帮我吗? 谢谢。 问题答案: 罪魁祸首是您的任务。做的时候 您可以在配置期间使用该方法复制

  • 本文向大家介绍如何在Python中生成非重复随机数?,包括了如何在Python中生成非重复随机数?的使用技巧和注意事项,需要的朋友参考一下 接下来的程序会生成10个介于1到100之间的随机非重复整数。它会在给定的时间间隔内生成一个随机整数,如果先前未添加过该整数,则将其添加到列表中。

  • 问题内容: 在Linux终端中创建文件的最简单方法是什么? 问题答案: 根据您希望文件包含的内容: 对于一个空文件 用于包含某些命令输出的文件。 或(或) 它可以打开现有文件进行编辑,也可以创建并打开一个空文件以输入(如果不存在)