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

Jsch已知主机不工作

喻高寒
2023-03-14

好的,我得到UnknownHostKey异常。我不想像这篇文章com.jcraft.jsch.jschException:unknownHostKey那样使用strithostKeyChecking=no来解决问题。我希望JSCH使用系统ssh使用的已知主机文件。有可能吗?

共有1个答案

方楷
2023-03-14

是的,这是可能的,在建立JSCH连接时,您需要设置knownHosts文件位置:

JSCH连接代码示例:

        JSch jsch = new JSch();
        jsch.setKnownHosts(propertyReader.getKnownHosts());
        session = jsch.getSession(propertyReader.getUsername(),
                propertyReader.getSftpLocation(), 22);
        session.setPassword(propertyReader.getPassword());
        session.connect();
        channel = session.openChannel("sftp");
        channel.connect();
        ChannelSftp sftp = (ChannelSftp) channel;

        if (!StringUtils.isBlank(fileToPut)) {
            sftp.put(fileToPut, propertyReader.getSftpDirectory() + "/"
                    + newFileName);
        } else {
            sftp.put(propertyReader.getSftpDirectory() + "/" + newFileName,
                    ChannelSftp.OVERWRITE);
        }

这里,propertyReader是一个类,它设置所有sftp物流的位置,已知主机文件将位于运行java程序的用户的~/.ssh目录中:

/home/<username>/.ssh/known_hosts

要将远程sftp服务器添加到已知主机文件中,您可以首先在服务器上使用常规sftp命令执行手动sftp,您需要从该服务器使用同一用户运行java进程:

sftp username@host

然后提供密码。或者如果使用密钥:

sftp -i KEYFILE.pem username@host

如果建立了连接,它将提示您将主机添加到已知主机中,请回复“是”。

 类似资料:
  • 我正在使用jcraft的jsch库。 有一个方法并且你可以 但我想添加已知的主机文件。我正在运行windows机器,所以我将putty注册表导出到一个文件,然后添加了以下内容。 但这带来了一个例外。 所以我认为文本文件可能没有正确配置。我可以指出如何创建一个已知主机键的列表,以及如何将它们添加到会话对象中。 还有会话接受的关键值。setconig() 谢谢

  • 我有使用JSCH通过sftp传输文件的代码。这段代码可以在我们的一个测试环境中工作,但不能在另一个环境中工作。它不工作的环境启用了FIPS模式,但我不确定这是否导致了问题。在这两种环境中,我都可以使用代码使用的私钥从命令行进行sftp。 JSch和ssh有一些相关的输出,但我不确定在这一点上还能做些什么。SSH密钥和已知主机文件似乎都已正确设置。

  • 我已经在Drive:/SOFTWARES/wamp文件夹上安装了wamp服务器。 但是在这里,我有一个问题。 只有localhost向我显示wamp索引页。 如果我输入网址,设置为虚拟主机,要么1。当我不使用互联网时,它们显示“无法连接”。2.他们通过网络重定向到一些网址。 我在wamp安装后采取的步骤: 1) 联合国对httpd中的vhost配置行进行了评论。配置文件 3) 在windows的主

  • 我是wordpress的新手,所以请协助。 3)在wp-config.php中将WP_CACHE变为false 我不知道还能做什么,请协助。

  • 我是php新手。我在连接和使用PHP中的数据时遇到了问题。我在这个网站上仔细查看了一下,但没有找到太多信息。下面是错误和代码。 我正确输入了用户名和密码。我甚至创建了一个新的用户名和密码来确保。我不知道为什么它不能连接到我的本地主机。我希望看到任何关于可能错误的反馈,谢谢! 错误内容如下: 警告:PDO::_construct():php_network_getaddresses:getaddri

  • 我有两个应用程序——基于浏览器的客户端和基于NodeJS的服务器,它们都使用WebSockets进行通信(我使用的是ColyseusJS库)。问题是,当我在本地主机上测试它们时,一切都正常,但当我将应用程序部署到我的Ubuntu VPS服务器时,它停止工作。 我在尝试连接时在浏览器中收到的消息是: 所以它到达服务器(因为当服务器被禁用时,消息是“连接建立中的错误:净::ERR_CONNECTION