328.5. 身份验证
SSH 组件可以使用以下两种机制之一对远程 SSH 服务器进行身份验证:公钥证书或用户名/密码。根据如何设置选项,配置 SSH 组件如何进行身份验证。
-
首先,它会查看
certResource
选项是否已设置,如果设置了,则使用它来查找引用的公钥证书并使用该证书进行身份验证。 -
如果没有设置
certResource
,它将查看是否设置了keyPairProvider
,如果设置了 keyPairProvider,它将使用它来进行基于证书的身份验证。 -
如果没有设置
certResource
或keyPairProvider
,它将使用用户名和密码
用户名和密码
SshConstants.USERNAME_HEADER
(CamelSshUsername
)和SshConstants.PASSWORD_HEADER
(CamelSshPassword
)设置的端点配置和标头设置的标头中提供的,也会使用标头中设置的凭证。
以下路由片段演示了使用 classpath 中的证书进行 SSH 轮询消费者。
在 XML DSL 中,
<route> <from uri="ssh://scott@localhost:8101?certResource=classpath:test_rsa&useFixedDelay=true&delay=5000&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>