This Confluence has been LDAP enabled, if you are an ASF Committer, please use your LDAP Credentials to login. Any problems file an INFRA jira ticket please.

Child pages
  • SSH

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

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
xml
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
ssh:[username[:password]@]host[:port][?options]

Options

Div
classconfluenceTableSmall

Name

Default Value

Description

host

null

Hostname of SSH Server

port

22

Port of the SSH Server

username

null

Username used for authenticating with SSH Server.

password

null

Password used for authenticating with SSH Server. Used if keyPairProvider is null.

keyPairProvider

null

Refers to a org.apache.sshd.common.KeyPairProvider to use for loading keys for authentication. If this option is used, then password is not used.

keyType

ssh-rsa

Refers to a key type to load from keyPairProvider. The key types can for example be "ssh-rsa" or "ssh-dss".

certResource

null

Camel 2.11: Path reference to a public key certificate. Prefix path with classpath:, file:, or http:.

certFilename

null

@deprecated: Use certResource instead. Refers to a filename to use within file based keyPairProvider.

timeout

30000

Milliseconds to wait beforing timing out connection to SSH Server.

Consumer Only Options

Div
classconfluenceTableSmall

Name

Default Value

Description

initialDelay

1000

Milliseconds before polling the SSH server starts.

delay

500

Milliseconds before the next poll of the SSH Server.

useFixedDelay

true

Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details.

pollCommand

null

Command to send to SSH Server during each poll cycle. You may need to end your command with a newline, and that must be URL encoded %0A.

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 (&#10;).

Code Block
xml
xml
<route id="camel-example-ssh-producer">
  <from uri="direct:exampleSshProducer"/>
  <setBody>
    <constant>features:list&#10;</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.

  1. 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.
  2. If 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.
  3. If neither 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,

Code Block
xml
xml
<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>

In the Java DSL,

Code Block
java
java
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
xml
xml
<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
Endpoint See Also
Endpoint See Also