SSH
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:
Code Block | ||||
---|---|---|---|---|
| ||||
{code:xml}
<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>
|
URI format
Code Block |
---|
{code} h3. URI format {code} ssh:[username[:password]@]host[:port][?options] {code} h3. Options {div:class=confluenceTableSmall} || Name || Default Value || Description || | host | | Hostname of SSH Server | | port | {{22}} | Port of the SSH Server | | username | | Username used for authenticating with SSH Server. | | password | | Password used for authenticating with SSH Server. Used if {{keyPairProvider}} is null. | | timeout | {{30000}} | Milliseconds to wait beforing timing out connection to SSH Server. | | initialDelay | {{1000}} | *Consumer only:* Milliseconds before polling the SSH server starts. | | delay | {{500}} | *Consumer only:* Milliseconds before the next poll of the SSH Server. | | useFixedDelay | {{true}} | *Consumer only:* Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | | pollCommand | | *Consumer only:* Command to send to SSH Server during each poll cycle. Used only when acting as Consumer | {div} {include:Endpoint See Also} |
Options
Div | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||
|
Consumer Only Options
Div | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||
|
Usage as a Producer endpoint
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 (
).
Code Block | ||||
---|---|---|---|---|
| ||||
<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>
|
Authentication
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.
- First, it will look to see if the
certResource
option has been set, and if so, use it to locate the referenced Public Key certificate and use that for authentication. - If
certResource
is not set, it will look to see if akeyPairProvider
has been set, and if so, it will use that to for certificate based authentication. - If neither
certResource
norkeyPairProvider
are set, it will use theusername
andpassword
options for authentication.
The following route fragment shows an SSH polling consumer using a certificate from the classpath.
In the XML DSL,
Code Block | ||||
---|---|---|---|---|
| ||||
<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,
Code Block | ||||
---|---|---|---|---|
| ||||
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
.
Certificate Dependencies
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.
Code Block | ||||
---|---|---|---|---|
| ||||
<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>
|
Example
See the examples/camel-example-ssh
and examples/camel-example-ssh-security
in the Camel distribution.
Include Page | ||||
---|---|---|---|---|
|