So, maybe the problem is really in the camel-ssh component, because, it's possible to get the key from resources, like that:
from("cxfrs:bean:gitServer") .routeId("GitRoutes") .choice() .when(header(CxfConstants.OPERATION_NAME).isEqualTo("getRepositories")) .setBody(constant("info")) .process(new Processor() { @Override public void process(Exchange exchange) throws Exception { InputStream is = getClass().getResourceAsStream("/gitkeys/mykey.pem"); String myString = IOUtils.toString(is, "UTF-8"); exchange.getOut().setBody(myString); } }); So, no OSGi trouble here I guess… On Thu, Feb 14, 2013 at 9:06 PM, Martin Stiborský < martin.stibor...@gmail.com> wrote: > Ok, so camel-ssh needs some love, to make it better…ok. > But without modifications in camel-ssh, I'm just not able to use it with > my SSH key, I tried like all possible combinations now. > > SshComponent sshGitComponent = new SshComponent(); > sshGitComponent.setHost("localhost"); > sshGitComponent.setPort(22); > sshGitComponent.setUsername("git"); > sshGitComponent.setKeyPairProvider(new FileKeyPairProvider(new > String[]{"gitkeys/mykey.pem"})); > sshGitComponent.setKeyType(KeyPairProvider.SSH_RSA); > > getContext().removeComponent("ssh"); > getContext().addComponent("ssh", sshGitComponent); > > from("cxfrs:bean:gitServer") > .routeId("GitRoutes") > .choice() > > .when(header(CxfConstants.OPERATION_NAME).isEqualTo("getRepositories")) > .setBody(constant("info")) > .to("ssh:git@localhost"); > > Why the removeComponent and the addComponent? I'd like to add new instance > of SshComponent, under different id, but when I do that, > Camel stucks on start, trying to find this new component…so I'm doing > something wrong there probably… > > In src/main/resources/gitkeys/mykey.pem is the key…but as I said, it > doesn't work for me, or I missed the correct combination…I tried also > classpath and file prefix, but no luck. > > The unit test works fine…problem is in the OSGi I guess…some classpath > issue? I don't know, I have quite a headache from this already, need a > break. > > > On Thu, Feb 14, 2013 at 3:13 PM, Claus Ibsen <claus.ib...@gmail.com>wrote: > >> On Thu, Feb 14, 2013 at 2:57 PM, Martin Stiborský >> <martin.stibor...@gmail.com> wrote: >> > Still one problem…the unit test was fine, but now in OSGi environment, >> > there are more troubles… >> > Is there some trick how to get resource from a bundle? I can't get a >> > reference to the key file stored in src/main/resources :( >> > >> >> I guess maybe camel-ssh should load the cert file like we do in other >> components using ResourceHelper. >> Then we can load from classpath (osgi and the rest of the world), files >> etc. >> >> eg prefix with classpath: or file: >> >> >> > >> > On Thu, Feb 14, 2013 at 12:25 PM, Martin Stiborský < >> > martin.stibor...@gmail.com> wrote: >> > >> >> I can try help there as well. I was looking for a chance to make my >> "first >> >> camel commit" anyway :) >> >> >> >> >> >> On Thu, Feb 14, 2013 at 12:00 PM, Scott Cranton <sc...@cranton.com> >> wrote: >> >> >> >>> Glad you figured it out. Yeah, the camel-ssh page does need some >> >>> attention. Thanks for the feedback, and I look forward to seeing your >> >>> suggested updates to the doc. >> >>> >> >>> The certFilename is just a shorthand for creating a >> >>> FileKeyPairProvider, which is identical to what the >> >>> SshComponentSecurityTest is doing >> >>> >> >>> sshComponent.setKeyPairProvider(new FileKeyPairProvider(new >> >>> String[]{"src/test/resources/hostkey.pem"})); >> >>> >> >>> but I see in the tests, I'm using the same resource for both producer >> >>> and consumer, so to your point about when public key, when private, I >> >>> should check that, update the tests, and most importantly update the >> >>> docs as it isn't clear... >> >>> >> >>> Thanks, >> >>> Scott >> >>> >> >>> >> >>> >> >>> On Thu, Feb 14, 2013 at 5:48 AM, Martin Stiborský >> >>> <martin.stibor...@gmail.com> wrote: >> >>> > As usually, problem solved few minutes after I posted this "call for >> >>> help >> >>> > message". >> >>> > Really there was a problem with loading the private key from >> resources. >> >>> > >> >>> > Now it works...my next message will be about updating the camel-ssh >> >>> wiki :) >> >>> > >> >>> > >> >>> > On Thu, Feb 14, 2013 at 10:37 AM, Martin Stiborský < >> >>> > martin.stibor...@gmail.com> wrote: >> >>> > >> >>> >> Hello guys, >> >>> >> I need to use camel-ssh in my route, also, I need authentication >> with >> >>> SSH >> >>> >> keys to the remote server. >> >>> >> I can't figure out how to configure the SSH producer in Camel. >> >>> >> >> >>> >> Now I started digging in camel-ssh source codes, but that is a long >> >>> trip >> >>> >> for me right now :( >> >>> >> >> >>> >> First of all, I'm not sure, what is difference between >> "certFilename" >> >>> and >> >>> >> "keyPairProvider" options for the ssh endpoint? >> >>> >> >> >>> >> Then, the private key have to be provided for the ssh endpoint, >> right? >> >>> The >> >>> >> public key is configured on the remote server account... >> >>> >> Also, in which format the SSH private key should be? PEM? >> >>> >> Like this? >> >>> >> >> >>> >> openssl rsa -in ~/.ssh/id_rsa -outform pem > id_rsa.pem >> >>> >> >> >>> >> I guess so, because it's like this here: >> >>> >> >> >>> >> https://github.com/apache/camel/blob/trunk/components/camel-ssh/src/test/resources/hostkey.pem >> >>> >> >> >>> >> I'm not even sure if the key is loaded properly in the Java code >> from >> >>> >> resources directory, because the exception I see there is: >> >>> >> >> >>> >> ========== >> >>> >> Caused by: java.io.IOException: Error performing public key >> >>> authentication >> >>> >> at >> >>> >> >> >>> >> org.apache.sshd.client.auth.UserAuthPublicKey.<init>(UserAuthPublicKey.java:86) >> >>> >> at >> >>> >> >> >>> >> org.apache.sshd.client.session.ClientSessionImpl.authPublicKey(ClientSessionImpl.java:146) >> >>> >> at >> >>> >> >> >>> >> org.apache.camel.component.ssh.SshEndpoint.sendExecCommand(SshEndpoint.java:113) >> >>> >> at >> >>> >> >> org.apache.camel.component.ssh.SshProducer.process(SshProducer.java:38) >> >>> >> ... 72 more >> >>> >> Caused by: java.lang.NullPointerException >> >>> >> at >> >>> >> >> >>> >> org.apache.sshd.client.auth.UserAuthPublicKey.<init>(UserAuthPublicKey.java:59) >> >>> >> ... 75 more >> >>> >> ========== >> >>> >> >> >>> >> Note the NullPointerException ... >> >>> >> >> >>> >> But I tried to follow this ( >> >>> >> >> >>> >> https://github.com/apache/camel/blob/trunk/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshComponentSecurityTest.java >> ) >> >>> test, >> >>> >> so I guess it should work... >> >>> >> >> >>> >> Could you give me at least some hint? >> >>> >> I promise I'll extend Camel wiki related to this topic definitely >> :P >> >>> >> >> >>> >> -- >> >>> >> S pozdravem / Best regards >> >>> >> Martin Stiborský >> >>> >> >> >>> >> Jabber: st...@njs.netlab.cz >> >>> >> Twitter: http://www.twitter.com/stibi >> >>> >> >> >>> > >> >>> > >> >>> > >> >>> > -- >> >>> > S pozdravem / Best regards >> >>> > Martin Stiborský >> >>> > >> >>> > Jabber: st...@njs.netlab.cz >> >>> > Twitter: http://www.twitter.com/stibi >> >>> >> >> >> >> >> >> >> >> -- >> >> S pozdravem / Best regards >> >> Martin Stiborský >> >> >> >> Jabber: st...@njs.netlab.cz >> >> Twitter: http://www.twitter.com/stibi >> >> >> > >> > >> > >> > -- >> > S pozdravem / Best regards >> > Martin Stiborský >> > >> > Jabber: st...@njs.netlab.cz >> > Twitter: http://www.twitter.com/stibi >> >> >> >> -- >> Claus Ibsen >> ----------------- >> Red Hat, Inc. >> FuseSource is now part of Red Hat >> Email: cib...@redhat.com >> Web: http://fusesource.com >> Twitter: davsclaus >> Blog: http://davsclaus.com >> Author of Camel in Action: http://www.manning.com/ibsen >> > > > > -- > S pozdravem / Best regards > Martin Stiborský > > Jabber: st...@njs.netlab.cz > Twitter: http://www.twitter.com/stibi > -- S pozdravem / Best regards Martin Stiborský Jabber: st...@njs.netlab.cz Twitter: http://www.twitter.com/stibi