2013-10-30 69 views
1

任何人都可以建議如何指定keyPairProvider選項與駱駝SSH組件?駱駝SSH keyPairProvider選項

我想連接到使用Camel SSH組件和KeyPairProvider選項的遠程SSH服務器。文檔不清楚如何使用這個選項,語法或我們需要提供的價值等。我已經嘗試給出類名,完整的類路徑,密鑰文件名等。沒有任何工作。我總是得到下面的錯誤。

Caused by: java.lang.IllegalArgumentException: Could not find a suitable setter for property: keyPairProvider as there isn't a setter method with same type: java.lang.String nor type conversion possible: No type converter available to convert from type: java.lang.String to the required type: org.apache.sshd.common.KeyPairProvider with value file:com.example.tree.custom.CustomFileKeyPairProvider 
    at org.apache.camel.util.IntrospectionSupport.setProperty(IntrospectionSupport.java:555) 
    at org.apache.camel.util.IntrospectionSupport.setProperty(IntrospectionSupport.java:565) 
    at org.apache.camel.util.IntrospectionSupport.setProperties(IntrospectionSupport.java:453) 
    at org.apache.camel.util.EndpointHelper.setProperties(EndpointHelper.java:249) 
    at org.apache.camel.impl.DefaultComponent.setProperties(DefaultComponent.java:264) 
    at org.apache.camel.component.ssh.SshComponent.createEndpoint(SshComponent.java:47) 
    at org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:120) 
    at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:508) 
    ... 18 more 

這是我的路線

from("direct:sshroute") 
.to("ssh://[email protected]?keyPairProvider=com.example.tree.custom.CustomFileKeyPairProvider") 

如果我不給keyPairProvider和修改路由使用的密碼,它工作正常。

我也想提一提的是,如果我創建自己的SSHComponent,設置CustomFileKeyPairProvider並將其添加到CamelContext(如測試包中給出的),它也可以正常工作。 但是隻想知道我們是否使用默認的駱駝組件,我們該如何使用這個選項。

感謝 - 拉維

+0

你能找到關於這方面的信息嗎? – Carlos

+0

遺憾沒有。 – Ravi

+0

您是否嘗試使用SSH PublicKeys登錄到遠程SSH而不提供密碼?只是想仔細檢查,因爲我正在積極努力。 – Carlos

回答

0

我一直在試圖想出這個問題的答案,因爲我還需要能夠通過SFTP駱駝路線傳送文件。幸運的是,我發現什麼可行。

基本上,你需要做的是提供你的駱駝路線的私鑰,而不是公鑰。這裏的假設是,您生成了一個公用密鑰以與遠程SSH/SFTP服務器共享,將該公共密鑰交付給遠程站點,並且您或遠程管理員將該文件放在遠程站點的「authorized_keys」容器中。

話雖這麼說,你建你的駱駝SFTP路線爲這樣:

<to uri="sftp://[email protected]_server_address/directoryname?privateKeyFile=/full/path/to/your/private_key/id_dsa&amp;knownHostsFile=/full/path/to/your/known_hosts" /> 

有了這個地址,我能到我的文件發送到我的遠程目標而無需登錄:

11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> Connecting to 10.0.0.110 port 22 
11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> Connection established 
11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> Remote version string: SSH-2.0-OpenSSH_6.4 
11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> Local version string: SSH-2.0-JSCH-0.1.44 
11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256 
11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> SSH_MSG_KEXINIT sent 
11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> SSH_MSG_KEXINIT received 
11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> kex: server->client aes128-ctr hmac-md5 none 
11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> kex: client->server aes128-ctr hmac-md5 none 
11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> SSH_MSG_KEXDH_INIT sent 
11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> expecting SSH_MSG_KEXDH_REPLY 
11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> ssh_rsa_verify: signature true 
11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> Host '10.0.0.110' is known and mathces the RSA host key 
11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> SSH_MSG_NEWKEYS sent 
11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> SSH_MSG_NEWKEYS received 
11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> SSH_MSG_SERVICE_REQUEST sent 
11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> SSH_MSG_SERVICE_ACCEPT received 
11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> Authentications that can continue: publickey,keyboard-interactive,password 
11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> Next authentication method: publickey 
11/27 23:35:03 INFO [aCamelQueue]] SftpOperations     - JSCH -> Authentication succeeded (publickey) 

我在my website的調查結果中進一步詳細瞭解了這個問題,但這是主要的問題。祝你好運!

+1

嗨Mastashake57,謝謝你的回覆。我正在尋找使用密鑰對的SSH連接。對於SFTPComponent,我已經使用上述方法。 SSHComponent的問題在於,駱駝文檔沒有舉例說明如何爲內置的Camel SSH組件使用keyPairProvider選項。 – Ravi

0

如果您正在使用密鑰對尋找SSH連接,你可以用certResource選項的做法,像

from("direct:sshroute") .to("ssh://[email protected]?certResource=file:path/to/your/private_key)

它在,你可以Prefix path with classpath:, file:, or http:.但我只試過DOC說僅限file:

希望它有幫助〜