首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在windows机器中生成known_host文件

如何在windows机器中生成known_host文件
EN

Stack Overflow用户
提问于 2018-03-13 11:30:51
回答 2查看 22.8K关注 0票数 5

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

代码语言:javascript
复制
        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();
        }

当"StrictHostKeyChecking“被禁用时,可以成功地建立SSH连接。如果启用了它,我将得到以下错误:

代码语言:javascript
复制
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)

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

代码语言:javascript
复制
jsch.setKnownHosts(knownHostsFileName); 

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

代码语言:javascript
复制
ssh-keyscan <HOST> > known_hosts 

它引发以下错误:

代码语言:javascript
复制
'ssh-keyscan' is not recognized as an internal or external command,
operable program or batch file.

我只有.ppk格式的公钥和私钥。我没有known_host文件。

如何创建known_host文件?

为什么ssh-keyscan命令抛出错误-不被识别为内部/外部命令?

EN

回答 2

Stack Overflow用户

发布于 2018-07-10 12:16:53

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

票数 4
EN

Stack Overflow用户

发布于 2018-03-13 11:36:29

此文件通常由ssh-keyscan创建,或者由用户与SSH主机的连接创建。

您可以通过命令创建它。

代码语言:javascript
复制
ssh-keyscan [host]

保存输出。-H选项支持散列输出,但我不知道所讨论的库是否可以使用它。

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

如果使用ssh-key扫描构造ssh_known_hosts文件而不验证密钥,则用户在中间攻击中容易受到人为攻击。另一方面,如果安全模型允许这样的风险,ssh-keyscan可以帮助检测在创建ssh_known_hosts文件之后开始的中间攻击中被篡改的密钥文件或人员。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49255038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档