Аутентификация с использованием открытого ключа j2ssh-maverick-1.5.5.jar

#authentication #key #public

#аутентификация #Клавиша #открытый

Вопрос:

Ниже приведен фрагмент кода для подключения к удаленному серверу с использованием аутентификации с открытым ключом. Я сгенерировал открытые и закрытые ключи с помощью инструмента генерации ключей Putty и при необходимости изменил файл authorized_keys в папке .ssh. Я могу подключиться к удаленному серверу с помощью Putty и предоставить запрошенную парольную фразу. Однако я не могу подключиться с помощью приведенного ниже кода. Это показывает мне —

java.io.IOException: не удалось прочитать ключ PuTTY! Неверный ключ шифрования

Есть какие-либо мысли по этому поводу?

 SocketTransport transport = new SocketTransport(hostname, port);
                    ssh = con.connect(transport, username);

                    FileInputStream in;
                    ByteArrayOutputStream out;
                    try 
                    {
                        in = new FileInputStream("E:\Projects\RBL\Finacle Interface\Finacle\AuthenticationKeys\RBLTestPrivateKey.ppk");
                        out = new ByteArrayOutputStream();
                         int read;
                         while((read = in.read()) > -1)
                           out.write(read);

                         in.close();

                         SshPrivateKeyFile pkf = SshPrivateKeyFileFactory.parse(out.toByteArray());
                         SshKeyPair pair = pkf.toKeyPair("calypso");

                         PublicKeyAuthentication pk = new PublicKeyAuthentication();
                         pk.setPrivateKey(pair.getPrivateKey());
                         pk.setPublicKey(pair.getPublicKey());

                         if(ssh.authenticate(pk)==SshAuthentication.COMPLETE)
                         {
                             Log.info(LOG_CATEGORY, "Authentication completed");
                             session = ssh.openSessionChannel();
                             return session;
                         }

                    } 
                    catch (IOException | InvalidPassphraseException | SshException e1) 
                    {
                        e1.printStackTrace();
                    }

                    /*PasswordAuthentication pwd = new PasswordAuthentication();
                    pwd.setPassword(this.password); 
                    if(ssh.authenticate(pwd)==SshAuthentication.COMPLETE) 
                    {
                        session = ssh.openSessionChannel();
                        return session;
                    }*/
                }
                catch(Exception e)
                {
                    isConnected = false;
                    e.printStackTrace();
                }
  

Ответ №1:

Если вы измените свою пару ключей на ключи OpenSSH, это может сработать…

Ответ №2:

 SshPrivateKeyFile pkf = SshPrivateKeyFileFactory.parse(new FileInputStream("E:\Projects\RBL\Finacle Interface\Finacle\AuthenticationKeys\TestRBL"));
                         SshKeyPair pair = pkf.toKeyPair("calypso");
  

решена моя проблема