328.5. 身份验证


SSH 组件可以使用以下两种机制之一对远程 SSH 服务器进行身份验证:公钥证书或用户名/密码。根据如何设置选项,配置 SSH 组件如何进行身份验证。

  1. 首先,它会查看 certResource 选项是否已设置,如果设置了,则使用它来查找引用的公钥证书并使用该证书进行身份验证。
  2. 如果没有设置 certResource,它将查看是否设置了 keyPairProvider,如果设置了 keyPairProvider,它将使用它来进行基于证书的身份验证。
  3. 如果没有设置 certResourcekeyPairProvider,它将使用 用户名和密码 选项进行身份验证。尽管 用户名和密码 是在通过 SshConstants.USERNAME_HEADER (CamelSshUsername)和 SshConstants.PASSWORD_HEADER (CamelSshPassword)设置的端点配置和标头设置的标头中提供的,也会使用标头中设置的凭证。

以下路由片段演示了使用 classpath 中的证书进行 SSH 轮询消费者。

在 XML DSL 中,

<route>
  <from uri="ssh://scott@localhost:8101?certResource=classpath:test_rsa&amp;useFixedDelay=true&amp;delay=5000&amp;pollCommand=features:list%0A"/>
  <log message="${body}"/>
</route>

在 Java DSL 中,

from("ssh://scott@localhost:8101?certResource=classpath:test_rsa&useFixedDelay=true&delay=5000&pollCommand=features:list%0A")
    .log("${body}");

例如,example /camel-example-ssh-security 中提供了使用公钥身份验证的示例

证书依赖项

如果您使用基于证书的身份验证,则需要添加一些额外的运行时依赖项。显示的依赖项版本从 Camel 2.11 开始,您可能需要根据您使用的 Camel 版本使用更新的版本。

<dependency>
  <groupId>org.apache.sshd</groupId>
  <artifactId>sshd-core</artifactId>
  <version>0.8.0</version>
</dependency>
<dependency>
  <groupId>org.bouncycastle</groupId>
  <artifactId>bcpg-jdk18on</artifactId>
  <version>1.72</version>
</dependency>
<dependency>
  <groupId>org.bouncycastle</groupId>
  <artifactId>bcpkix-jdk18on</artifactId>
  <version>1.72</version>
</dependency>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.