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

JSch SFTP security with session.setConfig(“StrictHostKeyChecking”, “no”);

东方夕
2023-03-14

我使用带有私钥的JSch到FTP文件

  1. jsch.add身份文件
  2. 会话会话=jsch.get会话("用户","domain.com",22);
  3. session.set配置("StrictHostKeyChecking","no");

第3行有问题。没有这一行,JSch就无法工作。

我的问题是:3号线会使SFTP传输不安全吗?

共有2个答案

盛城
2023-03-14

是的,它会降低连接(和传输)的安全性。特别是,它使连接向中间人攻击开放。

除非您不关心安全性(例如在专用网络内连接时),否则不要将< code > stricthostkey checking 设置为< code>no。

不是“没有这条线,JSch就不行”。您只需要让您的代码接受预期的服务器主机密钥。通过< code>setKnownHosts或< code > sethostkey repository 方法。

有关示例,请参阅如何在使用JSch SFTP库的同时解析JavaUn,nononHostKey?

您可以阅读我关于验证主机密钥的文章,了解它的重要性。它是关于WinSCPSSH /SFTP客户端的,但它通常适用于任何SSH客户端/库。

郝冥夜
2023-03-14

禁用StrictHostKeyChecking选项将使连接比启用该选项更不安全,因为它允许您连接到远程服务器而无需验证其SSH主机密钥。如果启用该选项,您将只能连接到SSH客户端已知密钥的服务器。

您必须决定这对于您的特定用例意味着什么——您连接的服务器是在专用的本地网络上,还是通过互联网连接?这是测试环境还是生产环境?

如有疑问,最好在更安全的方面犯错。我建议启用 StricktHostKeyCheck 并使用 setKnownHosts 方法来提供一个包含远程主机密钥的文件。

 类似资料:
  • 我正在使用JGit克隆一个远程git repo为: 请帮忙。谢了。

  • 问题内容: 我有一个字段,显示为从今天起的天数。因此和将分别显示为正数和负数。现在,我希望对它们进行排序,以便非负数首先以升序排列,然后负数以降序排列。例如: 问题答案: 以下内容也可以工作: 但是,此表单不会使用索引来按所需顺序生成行。如果您的查询将从中受益(从表中选择大多数行或使用限制),则需要使用并集:

  • 问题内容: 我看到上述注释在JCIP书中得到了广泛的使用。我认为这真的很有用,因为即使没有适当的文档,它也可以说明有关同步策略的一些信息。我还看到IntellijIdea使用了这些注释,它们现在实际上已经成为Java语言本身的一部分吗? 问题答案: 这些是自定义注释,不属于标准JDK。为了能够在代码中使用它们,您需要添加一个依赖项。 在jcip.net上,页面“ 并发注释:jar,javadoc,

  • 问题内容: 我的DAO实现在使用Tomcat7启动服务器时引发了不可序列化的异常。知道是什么原因造成的吗?我的其他DAO都没有这样做。 这是课程: 这是我的配置: 这是我的堆栈: 问题答案: 如果要序列化,则必须实现java.io.Serializable接口(您的堆栈跟踪指示已尝试将类的实例写入对象流)。 要序列化的实例以及该实例的对象图中的所有对象都必须全部可序列化。 从用于可序列化的java

  • 问题内容: Oracle Java教程站点的这一段使我感到困惑: 所有类都有至少一个构造函数。如果一个类未显式声明任何类,则Java编译器会自动提供一个无参数的构造函数,称为默认构造函数。此默认构造函数调用类父级的无参数构造函数,如果该类没有其他父级,则调用Object构造函数。如果父级没有构造函数(对象确实有一个构造函数),则编译器将拒绝该程序。 如果所有对象都直接或间接继承自Object,那么

  • 问题内容: 我刚刚开始在Java 8中使用注释,并得到了一些意外的结果。 我有这样的方法: 我编写了一个JUnit测试,为参数searchList传递了空值。我原以为会发生某种类型的错误,但好像没有注释就通过了。这是预期的行为吗?据我了解,这是允许您跳过编写样板空检查代码。 对于@NotNull应该做什么的解释将不胜感激。 问题答案: 和自己做什么。它们应该充当文档工具。 该注释提醒您在以下情况下