2013-08-01 11 views
41

Próbuję zrobić SFTP za pomocą jsch, ale natknąłem się jakiś błąd:szyfru „AES256-CBC” jest wymagane, ale nie jest dostępny

com.jcraft.jsch.JSchException: The cipher 'aes256-cbc' is required, but it is not available.

Poniżej znajduje się kod użyłem. Czy jest coś, czego mi brakowało?

JSch jsch = new JSch(); 
Session session = null; 

jsch.addIdentity("C:\\privatekey.ppk", "Password"); 

session = jsch.getSession("user", "54.251.240.234", 22); 
session.setConfig("StrictHostKeyChecking", "no"); 


Channel channel = session.openChannel("sftp"); 
channel.connect(); 
ChannelSftp sftpChannel = (ChannelSftp) channel; 
sftpChannel.put("C:\\Users\\test.txt", "/home/user/test.txt"); 
sftpChannel.exit(); 
session.disconnect(); 

StackTrace

[8/30/13 1:56:26:556 SGT] 00000021 SystemErr  R com.jcraft.jsch.JSchException: The cipher 'aes256-cbc' is required, but it is not available. 
[8/30/13 1:56:26:557 SGT] 00000021 SystemErr  R at com.jcraft.jsch.KeyPair.loadPPK(KeyPair.java:1017) 
[8/30/13 1:56:26:557 SGT] 00000021 SystemErr  R at com.jcraft.jsch.KeyPair.load(KeyPair.java:590) 
[8/30/13 1:56:26:557 SGT] 00000021 SystemErr  R at com.jcraft.jsch.KeyPair.load(KeyPair.java:542) 
[8/30/13 1:56:26:557 SGT] 00000021 SystemErr  R at com.jcraft.jsch.IdentityFile.newInstance(IdentityFile.java:40) 
[8/30/13 1:56:26:558 SGT] 00000021 SystemErr  R at com.jcraft.jsch.JSch.addIdentity(JSch.java:389) 
[8/30/13 1:56:26:558 SGT] 00000021 SystemErr  R at com.jcraft.jsch.JSch.addIdentity(JSch.java:370) 
[8/30/13 1:56:26:558 SGT] 00000021 SystemErr  R at com.belsize.sb.SB_UtilityBean.runExternalProgram_Windows(SB_UtilityBean.java:1134) 
[8/30/13 1:56:26:558 SGT] 00000021 SystemErr  R at com.belsize.sb.EJSLocal0SLSB_Utility_861cc9f0.runExternalProgram_Windows(EJSLocal0SLSB_Utility_861cc9f0.java) 
[8/30/13 1:56:26:558 SGT] 00000021 SystemErr  R at com.belsize.sb.SB_IntegrationBean.getFTP_Status(SB_IntegrationBean.java:2175) 
[8/30/13 1:56:26:559 SGT] 00000021 SystemErr  R at com.belsize.sb.EJSLocal0SLSB_Integration_13682180.getFTP_Status(EJSLocal0SLSB_Integration_13682180.java) 
[8/30/13 1:56:26:559 SGT] 00000021 SystemErr  R at pagecode.module.user_permission.W_useraccount.getFTP_Status(W_useraccount.java:992) 
[8/30/13 1:56:26:559 SGT] 00000021 SystemErr  R at pagecode.module.user_permission.Up1006.doUp1006_commandlink_testftpAction(Up1006.java:711) 
[8/30/13 1:56:26:559 SGT] 00000021 SystemErr  R at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
[8/30/13 1:56:26:560 SGT] 00000021 SystemErr  R at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) 
[8/30/13 1:56:26:560 SGT] 00000021 SystemErr  R at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 
[8/30/13 1:56:26:560 SGT] 00000021 SystemErr  R at java.lang.reflect.Method.invoke(Method.java:611) 
[8/30/13 1:56:26:560 SGT] 00000021 SystemErr  R at org.apache.el.parser.AstValue.invoke(AstValue.java:268) 
[8/30/13 1:56:26:560 SGT] 00000021 SystemErr  R at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278) 
[8/30/13 1:56:26:561 SGT] 00000021 SystemErr  R at org.apache.myfaces.view.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:83) 
[8/30/13 1:56:26:561 SGT] 00000021 SystemErr  R at javax.faces.component._MethodExpressionToMethodBinding.invoke(_MethodExpressionToMethodBinding.java:88) 
[8/30/13 1:56:26:561 SGT] 00000021 SystemErr  R at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:100) 
[8/30/13 1:56:26:561 SGT] 00000021 SystemErr  R at javax.faces.component.UICommand.broadcast(UICommand.java:120) 
[8/30/13 1:56:26:561 SGT] 00000021 SystemErr  R at javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:973) 
[8/30/13 1:56:26:562 SGT] 00000021 SystemErr  R at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:275) 
[8/30/13 1:56:26:562 SGT] 00000021 SystemErr  R at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1285) 
[8/30/13 1:56:26:562 SGT] 00000021 SystemErr  R at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:711) 
[8/30/13 1:56:26:562 SGT] 00000021 SystemErr  R at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:34) 
[8/30/13 1:56:26:562 SGT] 00000021 SystemErr  R at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:171) 
[8/30/13 1:56:26:563 SGT] 00000021 SystemErr  R at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
[8/30/13 1:56:26:563 SGT] 00000021 SystemErr  R at javax.faces.webapp.FacesServlet.service(FacesServlet.java:189) 
[8/30/13 1:56:26:563 SGT] 00000021 SystemErr  R at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1225) 
[8/30/13 1:56:26:563 SGT] 00000021 SystemErr  R at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:775) 
[8/30/13 1:56:26:564 SGT] 00000021 SystemErr  R at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:457) 
[8/30/13 1:56:26:564 SGT] 00000021 SystemErr  R at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178) 
[8/30/13 1:56:26:564 SGT] 00000021 SystemErr  R at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136) 
[8/30/13 1:56:26:564 SGT] 00000021 SystemErr  R at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97) 
[8/30/13 1:56:26:564 SGT] 00000021 SystemErr  R at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:77) 
[8/30/13 1:56:26:564 SGT] 00000021 SystemErr  R at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195) 
[8/30/13 1:56:26:565 SGT] 00000021 SystemErr  R at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91) 
[8/30/13 1:56:26:565 SGT] 00000021 SystemErr  R at com.belsize.servlet.filter.RedirectLogin.doFilter(RedirectLogin.java:177) 
[8/30/13 1:56:26:565 SGT] 00000021 SystemErr  R at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195) 
[8/30/13 1:56:26:565 SGT] 00000021 SystemErr  R at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91) 
[8/30/13 1:56:26:565 SGT] 00000021 SystemErr  R at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:928) 
[8/30/13 1:56:26:565 SGT] 00000021 SystemErr  R at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1025) 
[8/30/13 1:56:26:566 SGT] 00000021 SystemErr  R at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87) 
[8/30/13 1:56:26:566 SGT] 00000021 SystemErr  R at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:908) 
[8/30/13 1:56:26:566 SGT] 00000021 SystemErr  R at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662) 
[8/30/13 1:56:26:566 SGT] 00000021 SystemErr  R at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195) 
[8/30/13 1:56:26:566 SGT] 00000021 SystemErr  R at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:453) 
[8/30/13 1:56:26:566 SGT] 00000021 SystemErr  R at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:515) 
[8/30/13 1:56:26:567 SGT] 00000021 SystemErr  R at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:306) 
[8/30/13 1:56:26:567 SGT] 00000021 SystemErr  R at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83) 
[8/30/13 1:56:26:567 SGT] 00000021 SystemErr  R at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:166) 
[8/30/13 1:56:26:567 SGT] 00000021 SystemErr  R at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 
[8/30/13 1:56:26:567 SGT] 00000021 SystemErr  R at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 
[8/30/13 1:56:26:568 SGT] 00000021 SystemErr  R at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) 
[8/30/13 1:56:26:568 SGT] 00000021 SystemErr  R at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) 
[8/30/13 1:56:26:568 SGT] 00000021 SystemErr  R at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) 
[8/30/13 1:56:26:568 SGT] 00000021 SystemErr  R at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) 
[8/30/13 1:56:26:568 SGT] 00000021 SystemErr  R at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1691) 

Odpowiedz

4

Trzeba dodać do JRE - Java politykę nieograniczona siła, np .: http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html Proszę wymienić local_policy i us_export_policy na ścieżce JRE serwującego (\ lib \ security) Inne wersje zasad JCE można znaleźć na stronach internetowych Oracle.

+0

Witam, moja wersja Java "1.6.0_23" Java (TM) SE Runtime Environment (kompilacja 1.6.0_23-b05). W Jsch wspomina o J2SE 1.4.0 lub nowszym, nie ma potrzeby dodatkowej biblioteki – bittersour

+1

Tak, masz JCE - bez wątpienia, ale uwierz mi, walczyłem z tym samym. Domyślnie local_policy.jar i US_export_policy.jar na ścieżce JRE, uniemożliwia użycie klucza You size You mentioned. Musisz pobrać bibliotekę jurysdykcji JCE o nieograniczonej sile, następnie zastąp stare biblioteki tymi, które zasugerowałem wcześniej. –

+0

Zobacz także: http: //www.jcraft.com/jsch/README, mówi: "A następnie J2SE 1.4.2 (lub nowszy) nie obsługuje domyślnie aes256" i "Potwierdziliśmy, że przez zastosowanie "Java Cryptography Extension (JCE) Nieograniczone zasady dotyczące jurysdykcji zasobów [...] możemy cieszyć się" aes256-cbc, aes256-ctr ". –

51

Domyślnie polityka JCE-co przychodzą z JDK lub JRE- nie obsługują takich technik jak szyfrowanie (ASE-256, etc ..).

Na pewno MUSISZ wymienić swoje obecne słoiki JCE (istnieją na $ JAVA_HOME/jre/lib/security) z kompatybilną wersją Jave z witryny Oracle.

  • Pobierz linki:

JDK 1.6: http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html Poprawione Link

JDK 1.7: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

JDK 1.8: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

Będzie to naprawić the prob lem.

+0

Wypróbowany i przetestowany. –

+6

Wow. Nie wiedziałem, że Java jest dostarczana z okaleczonym szyfrowaniem. –

+0

To nie zadziała dla mnie. Używam ant.scp w gradle w Androidzie z "sshAntTask" org.apache.ant: ant-jsch: 1.9.6 "zależność. Czy coś mi brakuje? – Kangars

72

Ten błąd pojawia się również, gdy twój klucz prywatny jest w formacie kitu, a nie w otwartym formacie ssh.

Możesz przekonwertować klucz za pomocą narzędzia puttygen na otwarty klucz prywatny w formacie ssh.

To rozwiązuje problem dla mnie. Zastąpienie plików Java nie było konieczne w moim przypadku z netbeans 8.0.2 i Java 8_25.

+21

Generator kluczy PuTTY: 1) Załaduj istniejący plik klucza prywatnego. 2) Konwersje: Eksportuj klucz OpenSSH – Matthew

Powiązane problemy