328.5. 認証
SSH コンポーネントは、公開鍵証明書またはユーザー名/パスワードの 2 つのメカニズムのいずれかを使用して、リモート SSH サーバーに対して認証できます。SSH コンポーネントが認証を行う方法の設定は、どのオプションがどのように設定されているかに基づいています。
-
最初に、
certResource
オプションが設定されているかどうかを確認し、設定されている場合は、それを使用して参照されている公開鍵証明書を見つけ、それを認証に使用します。 -
certResource
が設定されていない場合は、keyPairProvider
が設定されているかどうかを確認し、設定されている場合はそれを証明書ベースの認証に使用します。 -
certResource
もkeyPairProvider
も設定されていない場合、認証にはusername
とpassword
のオプションが使用されます。username
とpassword
がエンドポイント設定で提供され、ヘッダーがSshConstants.USERNAME_HEADER
(CamelSshUsername
) およびSshConstants.PASSWORD_HEADER
(CamelSshPassword
) で設定されている場合でも、エンドポイント設定が優先され、ヘッダーに設定された認証情報が使用されます。
次のルートフラグメントは、クラスパスからの証明書を使用する 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}");
公開鍵認証の使用例は、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-jdk18on</artifactId> <version>1.72</version> </dependency> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcpkix-jdk18on</artifactId> <version>1.72</version> </dependency>