Ich versuche, meine localhost mit Klassen, die von sshj Bibliothek zur Verfügung gestellt für Bildungszwecke. So schrieb ich den Code oben, aber es gibt ein Problem bei new SSHClient.authPublickey(String userName,KeyProvider... keys)
Methode .Ich verfolgte jede Zeile meines Codes nicht nur meine auch sshj
Bibliothek zurückverfolgt, aber ich kann nichts nützliches finden.Ich gebe Fehlercodes, Stack-Trace von meiner IDE generiert (NetBeans 8.1
), meinen Quellcode und die importierten Gläser in mein Projekt unten.NoClassDefFoundError in 'neue SSHClient.authPublickey (String, KeyProvider)' Methode
Jar-Dateien: (Ich kann nicht mehr als 2 Links teilen, weil der Ruf Stackoverflow beschränke)
1. sshj-0.2.3.jar
2. slf4j-api-1.7.21.jar Verbindung = binary and source
3. bcprov, bcpkix, bcpg, bcmail (jdk 1,5-1,8 Version Dateien) link = Signed Jar Section
Source Code:
SSHClient sshClient = new SSHClient();
sshClient.addHostKeyVerifier(new PromiscuousVerifier());
sshClient.connect("localhost");
File keyFile = new File(dir);//dir = directory of publickey file
KeyProvider pubkey = sshClient.loadKeys(keyFile.getPath(),pass);//pass = passphrase of the pubkey file
sshClient.authPublickey(uName, pubkey); //error occuring in this line
Fehlercode:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/bouncycastle/openssl/PEMReader
at net.schmizz.sshj.userauth.keyprovider.PKCS8KeyFile.readKeyPair(PKCS8KeyFile.java:114)
at net.schmizz.sshj.userauth.keyprovider.PKCS8KeyFile.getPublic(PKCS8KeyFile.java:71)
at net.schmizz.sshj.userauth.method.KeyedAuthMethod.putPubKey(KeyedAuthMethod.java:44)
at net.schmizz.sshj.userauth.method.AuthPublickey.buildReq(AuthPublickey.java:62)
at net.schmizz.sshj.userauth.method.AuthPublickey.buildReq(AuthPublickey.java:81)
at net.schmizz.sshj.userauth.method.AbstractAuthMethod.request(AbstractAuthMethod.java:63)
at net.schmizz.sshj.userauth.UserAuthImpl.tryWith(UserAuthImpl.java:236)
at net.schmizz.sshj.userauth.UserAuthImpl.authenticate(UserAuthImpl.java:89)
at net.schmizz.sshj.SSHClient.auth(SSHClient.java:204)
at net.schmizz.sshj.SSHClient.authPublickey(SSHClient.java:304)
at net.schmizz.sshj.SSHClient.authPublickey(SSHClient.java:323)
at Main.SignInFuncts.auth(SignInFuncts.java:29)
at Main.SignInFuncts.signIn(SignInFuncts.java:52)
at Main.SignIn.buttonSignInActionPerformed(SignIn.java:118)
at Main.SignIn.access$000(SignIn.java:6)
at Main.SignIn$1.actionPerformed(SignIn.java:56)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6516)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6281)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4872)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:706)
at java.awt.EventQueue$3.run(EventQueue.java:704)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:720)
at java.awt.EventQueue$4.run(EventQueue.java:718)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.openssl.PEMReader
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
Stack Trace Line ist sshClient. authPublickey (uName, Pubkey)
SSHClient.java 1. Zweig
public void authPublickey(String username, KeyProvider... keyProviders)
throws UserAuthException,
TransportException {
authPublickey(username, Arrays.<KeyProvider>asList(keyProviders));
Stack Trace Line ist authPublickey (Benutzername, Arrays.asList (keyProviders));
SSHClient.java 2. Zweig
public void authPublickey(String username, Iterable<KeyProvider> keyProviders)
throws UserAuthException,
TransportException {
final List<AuthMethod> am = new LinkedList<AuthMethod>();
for (KeyProvider kp : keyProviders)
am.add(new AuthPublickey(kp));
auth(username, am);
Auth (Benutzername, sind);
SSHClient.java 3. Zweig
public void auth(String username, Iterable<AuthMethod> methods)
throws UserAuthException, TransportException {
assert isConnected();
auth.authenticate(username, (Service) conn, methods);//exception thrown at this line
ich meine öffentlichen SSH-Schlüssel mit ssh-keygen ohne Passwort generiert haben auch habe ich Passwort geschützt pubkey too.If ich mit ihm das Gleiche versuchen Fehler Stills das gleiche. Wenn andere Dinge benötigt werden, ich bin bereit zu teilen, sag es einfach.