Available as of Camel 2.10
The SSH component enables access to SSH servers such that you can send an SSH command, and process the response.
Maven users will need to add the following dependency to their pom.xml for this component:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-ssh</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
|
ssh:[username[:password]@]host[:port][?options] |
|
|
When the SSH Component is used as a Producer (.to("ssh://...")), it will send the message body as the command to execute on the remote SSH server.
Here is an example of this within the XML DSL. Note that the command has an XML encoded newline ( ).
<route id="camel-example-ssh-producer">
<from uri="direct:exampleSshProducer"/>
<setBody>
<constant>features:list </constant>
</setBody>
<to uri="ssh://karaf:karaf@localhost:8101"/>
<log message="${body}"/>
</route>
|
The SSH Component can authenticate against the remote SSH server using one of two mechanisms: Public Key certificate or username/password. Configuring how the SSH Component does authentication is based on how and which options are set.
certResource option has been set, and if so, use it to locate the referenced Public Key certificate and use that for authentication.certResource is not set, it will look to see if a keyPairProvider has been set, and if so, it will use that to for certificate based authentication.certResource nor keyPairProvider are set, it will use the username and password options for authentication.The following route fragment shows an SSH polling consumer using a certificate from the classpath.
In the 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>
|
In the Java DSL,
from("ssh://scott@localhost:8101?certResource=classpath:test_rsa&useFixedDelay=true&delay=5000&pollCommand=features:list%0A")
.log("${body}");
|
An example of using Public Key authentication is provided in examples/camel-example-ssh-security.
You will need to add some additional runtime dependencies if you use certificate based authentication. The dependency versions shown are as of Camel 2.11, you may need to use later versions depending what version of Camel you are using.
<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> |
See the examples/camel-example-ssh and examples/camel-example-ssh-security in the Camel distribution.