327.5. 認証

SSH コンポーネントは、公開鍵証明書またはユーザー名/パスワードの 2 つのメカニズムのいずれかを使用して、リモート SSH サーバーに対して認証できます。SSH コンポーネントが認証を行う方法の設定は、どのオプションがどのように設定されているかに基づいています。

  1. 最初に、certResource オプションが設定されているかどうかを確認し、設定されている場合は、それを使用して参照されている公開鍵証明書を見つけ、それを認証に使用します。
  2. certResource が設定されていない場合は、keyPairProvider が 設定されているかどうかを確認し、設定されている場合はそれを証明書ベースの認証に使用します。
  3. certResourcekeyPairProvider も設定されていない場合、認証には usernamepassword のオプションが使用されます。usernamepassword がエンドポイント設定で提供され、ヘッダーが SshConstants.USERNAME_HEADER (CamelSshUsername) および SshConstants.PASSWORD_HEADER (CamelSshPassword) で設定されている場合でも、エンドポイント設定が優先され、ヘッダーに設定された認証情報が使用されます。

次のルートフラグメントは、クラスパスからの証明書を使用する 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}");

公開鍵認証の使用例は、examples/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-jdk15on</artifactId>
  <version>1.47</version>
</dependency>
<dependency>
  <groupId>org.bouncycastle</groupId>
  <artifactId>bcpkix-jdk15on</artifactId>
  <version>1.47</version>
</dependency>